react children

children

react 中,属性名是一一对应的,除了children。

对于一个组件来说,其this.props.children拿到的是什么呢???举个????

<Grid>
  <Row />
  <Row />
  <Row />
</Grid>

// 在Grip中,拿到的children就是三个Row

注意:任何东西,都可以作为children, 举例:

<Grid>
  Here is a row:
  <Row />
  Here is another row:
  <Row />
  {() => <h1>Hello World!</h1>}
</Grid> // 字符串 和<Row>, 甚至最后一个箭头函数 都是Grid的children

我的使用举例:

// 场景是,每个页面都有一个title,这个title都有一样的样式,但是里面文字不一样,或者有些多个button 等待,因此,我写了一个Title的组件,这个组件我用css文件,设置了样式。这样实现了,我在一个地方设置样式,这样传入不同文字显示就行了。
// 不需要每一个页面里都写样式了。 // Title组件 export default class Title extends React.Component { render() { return ( <div className='title'> {this.props.children} </div> ) } } // 页面中的使用:
render() {return ( <div className='my_indicator_container'> <Title> 我的指标 <Button type="primary" onClick={this.handleClick} right' }}>指标登记</Button> </Title> </div> ) }
// 第二个页面:

return (

  <div className='adhocContainer'>

    <Title>

      Ad-hoc

      <Popover content={content} placement='right' trigger='hover' style={{ marginLeft: 16 }}>

        <Icon name='problem-circle-o' 18px' }} />

      </Popover>

    </Title>

  </div>

)

// 是不是很方便啊,开心脸~

我的使用很方便,react提供了很多操纵children的方法:

循环:React.Children.map 以及 React.Children.forEach

计数: React.Children.count 栗子:

  render() {
    return <p>React.Children.count(this.props.children)</p>
  }

转换为数组(如果你需要排序): React.Children.toArray

class Sort extends React.Component {
  render() {
    const children = React.Children.toArray(this.props.children)
    // Sort and render the children
    return <p>{children.sort().join(' ')}</p>
  }
}

参考文章: https://segmentfault.com/a/1190000011527160