我有两个独立的组件,它们没有简单的父子关系。
ComponentFolderA
|
ButtonComponent
ComponentFolderB
|
BannerComponent
当用户单击按钮并将该值发送到banner组件时,我想
setState
最好的办法是什么?
在功能组件中,可以在父组件中为ButtonComponent和BannerComponent创建状态。然后按照下面的例子做,
const Parent = () => {
const [sampleState, setSampleState] = useState(null);
return (
<>
<BannerComponent sampleState={sampleState} />
<ButtonComponent setSampleState={setSampleState} />
</>
)
}
然后,您可以访问setSampleState作为按钮组件中的道具。
另外,在React中查看将状态从一个组件设置为另一个组件的最佳实践方法,您可以使用状态管理器(上下文API、Redux)
将状态保留在父级中,并将状态设置功能发送到您的按钮。
const Parent = () => {
const [myState, setMyState] = useState(false);
return (
<>
<BannerComponent myState={myState} />
<ComponentWithButton setMyState={setMyState} />
</>
)
}
const ComponentWithButton = props => {
return (
<Button onClick={() => props.setMyState(true)} />
)
}