我有多个子组件,需要在这些同级之间进行通信。我目前正在尝试什么:
父级具有对象状态,并将setMessageItem作为道具传递给所有子级:
const [messageItem, setMessageItem] = useState({})
孩子:
useEffect(() => {
if(condition) {
props.setMessageItem(prevState => ({...prevState, messageData}))
..}
}
}[])
但是,只有一个孩子的数据达到此对象状态。当两个或两个以上的孩子试图同时更改父母的状态时,有什么办法可以使它起作用?
因此最终结果将是messageData将同时包含来自多个子级的数据。
答案 0 :(得分:1)
实例化组件时,useEffect()将仅运行一次。如果您想像这样使用它,可以这样做:
useEffect(() => {
props.setMessageItem(prevState => ({ ...prevState, messageData }));
}, [condition]);
然后它将在每次条件变化时触发。