繁体   English   中英

在React.js中的父组件和子组件之间进行通信

[英]Communicate between parent and child component in React.js

刚遇到一个关于React中父子组件之间通信的问题。

儿童

var Child = React.createClass({
    getInitialState() {
        return {
            childState: this.props.state,
        };
    },
    changeState(e) {
        this.setState({e.target.id});
    },
    render: function () {
        return (
            <button id='1' onClick={this.changeState}>1</button>
            <button id='2' onClick={this.changeState}>2</button>
        );
    },
});

父级

var Parent = React.createClass({
    getInitialState() {
        return {
            parentState: '1',
        };
    },
    render: function () {
        return (
            <Child state=this.state.parentState />
        );
    },
});

因此,现在Parent会将初始状态'1'传递给child,我希望child组件可以同时更改child和parent的状态。 例如,当单击第二个按钮时,子状态和父状态都设置为“ 2”。 我该如何实现? 谢谢大家!

要实现此行为,您需要通过道具与父组件进行通信。

var Child = React.createClass({
    render: function () {
        return (
            <button id='1' onClick={this.props.changeState}>1</button>
            <button id='2' onClick={this.props.changeState}>2</button>
        );
    },
});

var Parent = React.createClass({
    getInitialState() {
        return {
            parentState: '1',
        };
    },
    changeState: function(){
      this.setState({parentState: e.target.id});
    },
    render: function () {
        return (
            <Child changeState={this.changeState} state={this.state.parentState} />
        );
    },
});

其背后的想法是,您要将changeState函数作为一个函数从父组件传递到子组件,并使其可以通过prop进行访问。 这样,当您在子组件中调用prop函数时,父组件中的函数将被执行。

这样,您也不需要在子组件中保持第二个“单独”状态,因为父组件的状态将在两个组件中均可用,并且在两个组件中具有相同的值。

如果有任何输入错误,请原谅我-我在办公室,但由于您还没有答案,我想提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM