首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装第三方库

包装第三方库
EN

Stack Overflow用户
提问于 2017-12-22 19:29:49
回答 1查看 46关注 0票数 1

让我将问题简化为以下人工情况:

子组件是父级的子组件,使用方式如下:

代码语言:javascript
复制
<Parent>
   <Child parentColor=32/>
</Parent>

现在,Child需要设置父级的颜色。

基本上,我应该在哪里/如何处理孩子需要访问父元素的DOM元素的情况。

EN

回答 1

Stack Overflow用户

发布于 2017-12-22 21:45:52

react中的数据流是一个单向流,从父流到子流。

子级通常会使用回调(或事件处理程序)将数据传回父级。

一个儿童的组成部分不应该知道它的父母或兄弟姐妹,它应该只关心自己,在某些情况下,它自己的孩子。

例如,具有文本输入和按钮的子节点。它将以自己的状态管理输入的值,并通过按钮的onClick事件返回输入的值。

父级将如何处理此值?孩子的成分并不是很在乎。处理程序事件通过父事件传递给它,子事件将使用其状态的值调用它。这就是孩子所需要知道的。

下面是一个正在运行的小示例:

代码语言:javascript
复制
class Child extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: ''
    };
  }

  onChange = ({ target }) => {
    this.setState({ value: target.value });
  }

  onSubmit = () => {
    const { onSubmit } = this.props;
    onSubmit(this.state.value);
  }

  render() {
    const { value } = this.state;
    return (
      <div>
        <input
          placeholder="type a color"
          type="text"
          value={value}
          onChange={this.onChange}
        />
        <button onClick={this.onSubmit}>Change Color</button>
      </div>
    );
  }
}

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      color: 'green'
    };
  }

  onColorChange = color => this.setState({ color });

  render() {
    const { color } = this.state;
    return (
      <div style={{ backgroundColor: color }}>
        <Child onSubmit={this.onColorChange} />
      </div>
    );
  }
}

ReactDOM.render(<Parent />, document.getElementById("root"));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47946472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档