我有多个子组件,需要在这些兄弟姐妹之间进行通信。我目前正在尝试什么:Parent 具有对象状态并将 setMessageItem 作为道具传递给所有孩子:const [messageItem, setMessageItem] = useState({})孩子们:useEffect(() => { if(condition) { props.setMessageItem(prevState => ({...prevState, messageData})) ..} }}[])然而,只有一个孩子的数据才能达到这个对象状态。当两个或多个孩子同时试图改变父母的状态时,有什么办法可以让它工作吗?所以最终结果是 messageData 将同时包含来自多个孩子的数据。
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
当组件被实例化时, useEffect() 只会运行一次。如果你想这样使用它,你会这样做:
useEffect(() => {
props.setMessageItem(prevState => ({ ...prevState, messageData }));
}, [condition]);
然后它会在每次条件变化时触发。
添加回答
举报
0/150
提交
取消