javascript - React - 使用 this.props.children 传递状态

标签 javascript reactjs components jsx

所以我试图将一些 props 从我的顶级组件传递到子组件,我在网上做了一些搜索,但找不到任何显示我如何通过 WITH 传递 this.props.children 的东西一些值我的组件的状态。这是我的代码。

布局(父级):

export default class Layout extends React.Component {
    constructor (props) {
    super(props)
    this.state = { data: 'test' }
  }

    render() {
        const {location} = this.props;
        console.log("layout");
        return (
            <div>
                <Nav location={location}/>
                <div className="container">
                    <div className="row">
                        <div className="col-lg-12">

                            {this.props.children}, data={this.state.data}

                        </div>
                    </div>
                    <Footer/>
                </div>
            </div>

        );
    }
}

当我在下一个组件中调用“数据” Prop 时:

家( child ):

//ON COMPONENT RENDER
    componentDidMount = () => {
        console.log("home");
        console.log(this.props.data);
    }

在我的控制台中它返回:

home

Undefined

关于我应该如何兴奋剂的任何指示?感谢您提供任何帮助,在此先感谢您。

最佳答案

如果您试图直接向子组件添加 Prop ,这将不会真正起作用,因为组件被认为是不可变的。相反,您应该做的是创建一个包含子项克隆的 map 。

这篇博文解释得相当好:http://jaketrent.com/post/send-props-to-children-react/

以及为您的代码更改的相关代码片段:

class Layout extends React.Component {
  constructor (props) {
    super(props)
    this.state = { data: 'test' }
  }

  renderChildren() {
    return React.Children.map(this.props.children, child => {
      if (child.type === Child) {
        return React.cloneElement(child, {
          data: this.props.data
        })
      } else {
        return child
      }
    });
  }

  render() {
    const {location} = this.props;
    console.log("layout");
    return (
        <div>
            <Nav location={location}/>
            <div className="container">
                <div className="row">
                    <div className="col-lg-12">
                        {this.renderChildren()}
                    </div>
                </div>
                <Footer/>
            </div>
        </div>
    );
  }
}

关于javascript - React - 使用 this.props.children 传递状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231074/

相关文章:

javascript - 更改名称在另一个变量中的变量

javascript - jQuery 窗口进入/退出 View 处理程序

javascript - 如果日期仅由年份和月份组成,则将日期显示为不填充 "01"的字符串

javascript - 两个日期之间的中点

javascript - 错误: Request failed with status code 401 : Unauthorized in React. js并使用setState进行授权

javascript - 在 React 中将 onChange 事件从子级传递给父级

javascript - react : How to add new value to props from imported file?

javascript - 如何使我的按钮在显示国家/地区后正确显示一个国家/地区的完整描述

input - Ii 如何在我的组件中获得 ionic 2 中的输入值?

javascript - Vue.js 更新了计数钩子(Hook)