在 React 中访问父组件中的子状态值

Posted

技术标签:

【中文标题】在 React 中访问父组件中的子状态值【英文标题】:Access Child state value in Parent component in React 【发布时间】:2019-08-03 09:12:48 【问题描述】:

我在 React 中有(例如)两个组件。第一个App.js 是父组件。它将一些值传递给子组件Child.js。在child.js, 中,它通过props 接收值并使用axios 调用结果更新一些state 变量。这很好用。

现在我需要在App.js 中获取更新结果值。如何在App.js 中获得该值?

App.js

this.state ( ... 
    examResult: null // need to update this with the child component result.
 )

<ChildComponent 
    Id=this.state.StudentId 
    Name=this.state.StudentName
/>

Child.js

state 
   examResult: null

...
componentDidMount()

    const Id, Name = this.props;
    axios.get( .... //To get the Result
    this.setState(
     examResult: examResult //Update the result to state variable. It wors fine. I need to pass this value to App.js
    )

【问题讨论】:

【参考方案1】:

你可以这样做:

家长:

updateResults(results) 
   this.setState(examResult:results);

render() 
   return (<ChildComponent 
    Id=this.state.StudentId 
    Name=this.state.StudentName
    updateResults=this.updateResults.bind(this)
/>)

孩子:

componentDidMount()

    const Id, Name, updateResults = this.props;
    axios.get( ....).then(results => //To get the Result
      updateResults(results.data)
    )

【讨论】:

【参考方案2】:

您可以将另一个函数作为道具传递。您可以从子组件调用该函数并在父组件中传递您需要的任何参数。

例如:

<ChildComponent 
    Id=this.state.StudentId 
    callback=this.callbackfn
    Name=this.state.StudentName />

this.callbackfn 将是您父组件中的一个函数。

从子组件中,您可以将其称为

this.props.callback

【讨论】:

对不起..我不明白你。 &lt;Parent&gt; 是什么,我必须从哪里调用它? 所以,在子组件中,我可以调用this.props.callback。如果我在这个函数中设置状态,那么我可以在App.js 中访问同一个变量吗?如果我错了,你能举个例子吗 您可以将该变量作为参数传递给该回调函数。

以上是关于在 React 中访问父组件中的子状态值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从 React 中的子组件获取的数据更新父组件中的状态

如何从 React 中的子组件更新父组件(功能)

如何从 React 中的父类更新我的子组件状态?

无法访问父组件 React 打字稿中的转发 Ref 值

如何在 React 中访问功能组件中的最新状态值

React中redux的异步性问题?