提问者:小点点

发送状态/道具到另一个组件在React with onASE


我有两个独立的组件,它们没有简单的父子关系。

ComponentFolderA 
|
ButtonComponent 

ComponentFolderB
|
BannerComponent

当用户单击按钮并将该值发送到banner组件时,我想setState

最好的办法是什么?


共2个答案

匿名用户

在功能组件中,可以在父组件中为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)} />
  )
}