gpt4 book ai didi

javascript - React 从子级 -> 父级 -> 另一个子级传递数据

转载 作者:行者123 更新时间:2023-12-01 01:55:25 26 4
gpt4 key购买 nike

我正在使用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>
)
}

最佳答案

这个fiddle就是您正在搜索的内容。

代码如下:

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 是异步的,因此在第一个渲染中您的数据数组是空的。

关于javascript - React 从子级 -> 父级 -> 另一个子级传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51083763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com