如何在反应中将状态从父母传递给孩子?

用户1255102

如何将状态属性从父级传递给子级?在下面的实现中,Dropdown 组件有一个状态“isActive”,我想在 Button 组件中访问它以将正确的样式附加到它。Dropdown 必须是通用的,因为它应该采用不同种类的按钮。

<Dropdown items="...">
  <Button active ="false" />
</Dropdown>

Dropdwon.js

...

    constructor(props){
        super(props)
        this.state = {
         isActive: true,
        }
    }

    render (){
        return (
               <div className={styles.toggle} onClick={(event) => this.showMenu(event)}>
                    {this.props.children} /* want to set active prop for the child button here */
                </div>
        );
} 

...
快活

你有两种可能:

  1. 提升您的Dropdown状态并将其保留在其父组件中;
  2. 使用useContext钩子;

第一种方法会更好,但它可能对您的应用程序不利(我不知道)。让我为这两种情况举一个例子。


这是我将isActive状态提升到父组件的示例

const ParentComponent = () => {
    const [isActive, setIsActive] = useState(false);

    handleIsActiveChange = (newValue) => {
        setIsActive(newValue);
    }

    <Dropdown isActive={isActive} setIsActive={handleIsActiveChange}>
        <Button isActive={isActive} />
    </Dropdown>
}

const Dropdown = props => {
    // You can use `props.isActive` to know whether the dropdown is active or not.
    // You can use `props.handleIsActiveChange` to update the `isActive` state.
}

const Button = props => {
    // You can use `props.isActive` to know whether the dropdown is active or not.
}

相反,这会利用useContextAPI:

const dropdownContext = React.createContext(null);

const Dropdown = props => {
    const [isActive, setIsActive] = useState(false);

    return (
        <dropdownContext.Provider value={{ isActive }}>
            {props.children}
        </dropdownContext.Provider>
    );
}

const Button = props => {   
    const dropdownCtx = React.useContext(dropdownContext);

    // You can use `dropdownCtx.isActive` to know whether the dropdown is active or not.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在反应中将道具从父母传递给孩子?

如何在反应中将功能从父母传递给孩子?

如何在Vue中将道具从父母传递给孙子

如何在 React 中将道具从孩子传递给父母?

如何使用打字稿将道具从父母传递给孩子并做出反应?

将道具从父母传递给孩子(而孩子自己是父母)反应js

如何在反应中将道具传递给孩子?

如何在反应中从父母激发孩子的功能?

将事件从父母传递给孩子

如何在本机反应中将状态传递给容器

反应本地-将导航道具从父母传递给孩子

在 React 中将状态从孩子传递给父母;孩子有单独的状态

我如何在React中将道具从孩子传递给父母,以增加onClick?

如何通过钩子将状态从孩子传递给父母

如何在反应中将自定义onClick函数从父级传递给子级

从父母到孩子的反应传递道具行为异常

如何将点击处理程序从父母正确地传递给孩子?

将功能从父母传递给孩子

Blazor将数据从父母传递给孩子

反应:如何将道具从孩子传递给父母到另一个孩子?

如何从孩子到父母获得状态反应

反应redux将状态传递给孩子

我如何在反应中将状态传递给文件 app.js?

将事件和道具从孩子传递给父母以做出反应

如何使用功能组件在反应中将选定的道具传递给孩子的孩子

如何在反应导航中将道具传递给屏幕组件

如何在反应中将道具传递给多级组件?

如何在反应中将异步对象传递给道具?

如何在反应中将变量传递给函数