无法正确更新父对象状态

我有多个子组件,需要在这些兄弟姐妹之间进行通信。我目前正在尝试什么:


Parent 具有对象状态并将 setMessageItem 作为道具传递给所有孩子:


const [messageItem, setMessageItem] = useState({})

孩子们:


useEffect(() => {

    if(condition) {

        props.setMessageItem(prevState => ({...prevState, messageData}))

    ..}

    }

}[])

然而,只有一个孩子的数据才能达到这个对象状态。当两个或多个孩子同时试图改变父母的状态时,有什么办法可以让它工作吗?


所以最终结果是 messageData 将同时包含来自多个孩子的数据。


大话西游666
浏览 119回答 1
1回答

慕工程0101907

当组件被实例化时, useEffect() 只会运行一次。如果你想这样使用它,你会这样做:useEffect(() => {  props.setMessageItem(prevState => ({ ...prevState, messageData }));}, [condition]);然后它会在每次条件变化时触发。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript