javascript - Reactjs - 如何将值从子组件传递到祖父组件?

标签 javascript reactjs jsx

下面是在reactjs中将值从子组件传递到父组件的正确示例。

App.jsx

import React from 'react';

class App extends React.Component {

   constructor(props) {
      super(props);
        
      this.state = {
         data: 'Initial data...'
      }

      this.updateState = this.updateState.bind(this);
   };

   updateState() {
      this.setState({data: 'Data updated from the child component...'})
   }

   render() {
      return (
         <div>
            <Content myDataProp = {this.state.data} 
               updateStateProp = {this.updateState}></Content>
         </div>
      );
   }
}

class Content extends React.Component {

   render() {
      return (
         <div>
            <button onClick = {this.props.updateStateProp}>CLICK</button>
            <h3>{this.props.myDataProp}</h3>
         </div>
      );
   }
}

export default App;

ma​​in.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('app'));

我需要明确关于将值从子组件传递到祖 parent 组件的概念。请帮助我!.

最佳答案

可以通过props将更新函数传递给孙组件,只需在子组件中再次传递即可。

class App extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      data: 'Initial data...'
    }
    this.updateState = this.updateState.bind(this);
  }

  updateState(who) {
    this.setState({data: `Data updated from ${who}`})
  }

  render() {
    return (
      <div>
        Parent: {this.state.data}
        <Child update={this.updateState}/>
      </div>
    )
  }
}

class Child extends React.Component {
  render() {
    return (
      <div>
        Child component
        <button onClick={() => this.props.update('child')}>
          CLICK
        </button>
        <GrandChild update={this.props.update}/>
      </div>
    );
  }
}

class GrandChild extends React.Component {
  render() {
    return (
      <div>
        Grand child component
        <button onClick={() => this.props.update('grand child')}>
          CLICK
        </button>
      </div>
    );
  }
}
ReactDOM.render(<App />, document.getElementById('root'))
<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>

关于javascript - Reactjs - 如何将值从子组件传递到祖父组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121667/

相关文章:

javascript - Node.js 的 "os"模块没有 userInfo() 方法

javascript - 单击其中一个时在两个 A HREF 之间切换可见性?

javascript - 像 p5.js 这样的 vanilla javascript 中是否有映射函数?

javascript - 使用 javascript 选择不同组中的所有单选按钮

javascript - 在 React 中使用 HTML/CSS 渲染电子邮件

javascript - 如何制作一个像 Typescript 中真正的 "If"一样工作的 React "if"组件?

javascript - 将屏幕大小调整为 768px 时,导航更改样式

javascript - React - 无法读取未定义的属性 X

javascript - React 和 MobX - 用户离开现有页面时的确认对话框

javascript - 如何基于 bool 属性有条件地在 ReactJS 中应用嵌套的 SCSS 类?