Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React中单击为父级的父级设置状态?_Javascript_Reactjs - Fatal编程技术网

Javascript 在React中单击为父级的父级设置状态?

Javascript 在React中单击为父级的父级设置状态?,javascript,reactjs,Javascript,Reactjs,因此,我是一个新手,仍然在学习,从父元素管理onClick很容易,但我不确定如何将单击向上发送一个或多个步骤到父元素的父元素。在我的设置中,组件类似于此页面>标题>菜单按钮。Header comp控制菜单的打开和关闭,但出于动画目的,我需要在页面父级中设置一个状态,以便它可以将其传递给Header的同级组件。当菜单按钮被点击时,我需要将其发送到页面的所有链接。有人能解释一下这是如何实现的吗?我发现的大多数示例都是关于一个直接的父-子onClick句柄的,我已经在用Header和Menu按钮组件做

因此,我是一个新手,仍然在学习,从父元素管理onClick很容易,但我不确定如何将单击向上发送一个或多个步骤到父元素的父元素。在我的设置中,组件类似于此页面>标题>菜单按钮。Header comp控制菜单的打开和关闭,但出于动画目的,我需要在页面父级中设置一个状态,以便它可以将其传递给Header的同级组件。当菜单按钮被点击时,我需要将其发送到页面的所有链接。有人能解释一下这是如何实现的吗?我发现的大多数示例都是关于一个直接的父-子onClick句柄的,我已经在用Header和Menu按钮组件做这个句柄了

请参见以下示例

使用已通过react组件继承链传递的单击处理程序

function MenuButton(props) {
    return <button onClick={props.onClick}>Do Something</button>
}

function Header(props) {
    return (
        <div>
        <MenuButton onClick={props.onClick} />
        </div>
    )
}
功能菜单按钮(道具){
回来做点什么
}
功能标题(道具){
返回(
)
}
在父most组件中建立一个单击处理程序,并作为道具传递给子组件,如下所示

class Page extends Component {
    constructor() {
        super();

        this.state = {
            someStateToCache: false
        };
        this.clickHandler = this.clickHandler.bind(this); //bind context to click handler
    }

    clickHandler() {
        this.setState({ someStateToCache: true });
    }

    render() {
        return (
            <div>
                <Header onClick={this.clickHandler} />
            </div>
        );
    }
}
类页扩展组件{
构造函数(){
超级();
此.state={
someStateToCache:错误
};
this.clickHandler=this.clickHandler.bind(this);//将上下文绑定到click handler
}
clickHandler(){
this.setState({someStateToCache:true});
}
render(){
返回(
);
}
}

在“提升状态”下的Facebook文档中找到了我的答案,但您的解释更简单,谢谢!很棒,快乐的编码=]