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

发布于 2021-01-31 22:41:43

我在这里有一个简单的设置:

我有一个父组件,该父组件有2个子组件。在第一个子组件中:用户更改输入的值。然后,该更改的值将是我想要从该孩子传递给父对象的道具,以便可以将其传递给与同一父组件相连的另一个孩子。

Main (parent component)___|
                          |_Child 1
                          |_Child 2

当前设置的这个,请查看

从用户输入到UI更改的流程:1.在“ Child
1”中:调整一个滑块,将onChange值传递给父组件;2.将此属性(新的滑块值)传递给Parent组件,以便“ Child
2”组件可以使用它;3.然后,该道具,即valueOfUserInput(新的滑块值)将在有关样式“ Child 2”组件元素的if /
else语句中使用。

我看过与我的问题相似的解决方案和教程,但是对我来说意义不大。我整天都在闲逛,穿插着开会。

任何帮助或建议将是惊人的。谢谢大家对这个React noob的耐心配合。

关注者
0
被浏览
245
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    当您希望2个孩子交流或共享一些数据时,在React中实现此目的的方法是 提升状态
    source)。

    这意味着孩子使用的状态应该居住在父母中。然后父母将状态传给孩子。

    要从子项中的操作更新状态,通常的模式是从父项中传递一个函数,该函数在子项中执行该操作时会被调用。

    这是一个示例,它可以满足您的要求:

    class Parent extends React.Component {
      constructor(props) {
        super(props);
        this.state = { valueOfUserInput: '' };
      }
    
      handleUserInputChange = event => {
        this.setState({
          valueOfUserInput: event.target.value,
        });
      };
    
      render() {
        const { valueOfUserInput } = this.state;
        return (
          <div>
            <Child1 valueOfUserInput={valueOfUserInput} onUserInputChange={this.handleUserInputChange} />
            <Child2 valueOfUserInput={valueOfUserInput} />
          </div>
        );
      }
    }
    
    class Child1 extends React.Component {
      render() {
        const { valueOfUserInput, onUserInputChange } = this.props;
        return <input type="text" value={valueOfUserInput} onChange={onUserInputChange} />;
      }
    }
    
    class Child2 extends React.Component {
      render() {
        const { valueOfUserInput } = this.props;
        return (
          <div>
            {valueOfUserInput}
          </div>
        );
      }
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看