如何知道子组件的类型

在日常开发中,我们可能会遇到像 select 组件和 RadioGroup 组件的情况:

Select 组件

<Select defaultValue="lucy" style={{ width: 120 }} onChange={handleChange}>
  <Option value="jack">Jack</Option>
  <Option value="lucy">Lucy</Option>
  <Option value="disabled" disabled>
    Disabled
  </Option>
  <Option value="Yiminghe">yiminghe</Option>
</Select>

Radio 组件

<Radio.Group onChange={this.onChange} value={this.state.value}>
  <Radio style={radioStyle} value={1}>
    Option A
  </Radio>
  <Radio style={radioStyle} value={2}>
    Option B
  </Radio>
</Radio.Group>

对于这种情况,Select 作为父组件,需要知道子组件的类型,它是不是 Option 组件,例如,我们只会对 Option 子组件添加特殊属性,如果是其它类型子组件则不作处理:

于是我们可以这样:

注意: 如果 this.props.children 是数组,则需要使用循环:

同时,使用 type 这种方法,不仅可以用于函数式组件,对于 Class 组件也同样有效:

Last updated

Was this helpful?