反应从孩子 -> 父母 -> 另一个孩子传递数据

郑杰

我正在用 react.js 编写我的应用程序并尝试从组件(P)的子组件(C1)获取数据,它是一个对象数组,然后再次将数据传递给另一个子组件(C2)。但是,当我在(C2)中控制台记录到达的数据时,奇怪的是它显示数据在那里,但是当我控制台记录它的'属性时,它说它无法读取未定义的属性。代码如下:

class ParentComponent extends Component {

      constructor(props) {
           super(props)
           this.state = {
               photos: []
             }
        }

     myCallback = dataFromChild1 => {
         this.setState({
              photos: dataFromChild1
          })

      render(){
           const { photos } = this.state;

           return (
                 <main>
                    <Child1 callbackFromParent={this.myCallback} />
                    <Child2 photos={photos} />
                 </main>
            )

   }


   class Child1 extends Component {

        constructor(props) {
             super(props)
          }

       componentDidMount() {
            const photos = [{width: '100px'}, {width: '150px'}];
            this.props.callbackFromParent(photos);
         }

       render() {
            return (
                  <main>
                    ...
                  </main>
             )
       }
   }


    function Child2(props) {
          const photos = props.photos;

          console.log(photos)     // > [{..},{..}]

          console.log(photos[0].width)  // > cannot read property 'width' of undefined

          return (
                 <main>
                  ...
                 </main>
           )
    }
保罗·戴尔·阿古佐

这个小提琴就是你正在寻找的。

这是代码:

class ParentComponent extends React.Component {

  constructor(props) {
       super(props);
       this.state = {
           photos: []
         }

    }

  myCallback = dataFromChild1 =>{
     this.setState({
          photos: dataFromChild1
      });
  };

  render() {
       const { photos } = this.state;

       return (
             <main>
                <Child1 callbackFromParent={this.myCallback}/>
                <Child2 photos={photos} />
             </main>
        );
   }

   }


   class Child1 extends React.Component {

        constructor(props) {
             super(props)
          }

       componentDidMount() {
            const photos = [{width: '100px'}, {width: '150px'}];
            this.props.callbackFromParent(photos);
         }

       render() {
            return (
                  <main>
                    ...
                  </main>
             )
       }
   }


    function Child2(props) {
          const photos = props.photos;

          console.log(photos)     // > [{..},{..}]

          console.log(photos[0] ? photos[0].width : undefined)  // > cannot read property 'width' of undefined

          return (
                 <main>
                  ...
                 </main>
           )
    }

ReactDOM.render(
  <ParentComponent name="World" />,
  document.getElementById('container')
);

setState 是异步的,所以在第一次渲染中你的数据数组是空的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

由父母的另一个孩子生孩子

来自分类Dev

将一个孩子的改变传达给父母的父母

来自分类Dev

反应-防止父母触发孩子的事件触发

来自分类Dev

从孩子到父母处理onClick()方法(反应)

来自分类Dev

如何从孩子到父母获得状态反应

来自分类Dev

我无法访问已添加到另一个孩子(它的父母)中的孩子

来自分类Dev

如何使一个Div的职位(不是孩子或父母)完全链接/取决于另一个Div的职位?

来自分类Dev

如何从孩子向父母的父母发送数据

来自分类Dev

React更新一个孩子的父母身份,并将更新后的值传递给新孩子

来自分类Dev

从父母到孩子的反应传递道具行为异常

来自分类Dev

选择一个父母和所有给定父母或孩子ID的孩子

来自分类Dev

选择一个父母和所有给定父母或孩子ID的孩子

来自分类Dev

显示隐形父母的孩子

来自分类Dev

让孩子与父母的点击事件

来自分类Dev

父母对孩子的背景

来自分类Dev

父母/孩子组合框

来自分类Dev

父母对孩子的背景

来自分类Dev

让孩子修改其父母

来自分类Dev

固定父母身后的孩子

来自分类Dev

休眠检索父母/孩子

来自分类Dev

将孩子抛弃给父母

来自分类Dev

相对父母,绝对孩子

来自分类Dev

休眠两个父母一个孩子映射

来自分类Dev

与父母一起举一个孩子的例子

来自分类Dev

如何使用jQuery使孩子成为父母的父母?

来自分类Dev

在孩子悬停时更改父母-父母背景

来自分类Dev

干CSS-多个父母一个孩子

来自分类Dev

打开一个孩子的div点击父母的

来自分类Dev

祖父母的第一个孩子