当前位置: 首页 > 面试题库 >

React.js-如何将值从子组件传递到祖父母组件?

令狐钧
2023-03-14
问题内容

以下是在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;

main.js

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

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

我需要明确有关将值从子组件传递到祖父母组件的概念。请帮我!!


问题答案:

您可以通过,将update函数传递给大子级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>


 类似资料:
  • 我正在制作学生姓名及其ID的列表。每当呈现列表元素时,父类都会调用子类。 我试图在列表下放置一个提交按钮,返回检查学生姓名的结果,一个或多个。我不明白的是,如何将学生名的值从孩子组件返回到家长,并一直返回到层次结构的顶部,并存储在某种变量中。有没有办法返回值给父组件,即调用的组件?

  • 问题内容: 我有两个组成部分: 第一个是父组件,它是通常的React组件。 第二个是孩子,它是功能组件。 我想将 Titles 的值(处于子状态)传递给父Component。这是我的 子组件 代码: 这是我的 父组件 : 这看起来很容易,但这是我第一次使用功能组件。你能帮我吗 ? 问题答案: React就是关于在组件树中向下流动的数据。如果您希望能够显示和/或修改彼此之间的共享状态,则应提升状态并

  • 我制作了一个VueJS组件,可以运行一些

  • 问题内容: 在React中,我有类似的文件 parent.js 包含文本框和按钮 child.js 包含P标签 App.js 包含父组件和子组件 问题 将“父级”上的“文本框”值传递给子级,并将其显示在子级标记中。 完整代码 堆叠 问题答案: 更新了示例以将数据传递给子组件。 https://stackblitz.com/edit/react- trmj9i?file=child.js 在下面添加

  • 我完全不知道这里发生了什么,如果有任何帮助,我将不胜感激!

  • 问题内容: 我想将回调传递给加倍嵌套的组件,并且尽管我能够有效地传递属性,但我不知道如何将回调绑定到正确的组件上才能被触发。我的结构如下所示: 单击列表项时应触发一个回调,这是OutermostComponents方法“ onUserInput”,但相反,我得到“未捕获的错误:未定义不是函数”。我怀疑问题出在我如何在第一个内部渲染SecondNestedComponent并将其传递给回调函数。代码