将数据从子节点传递到父节点并传递给另一个子组件React Js

时间:2018-05-26 09:01:46

标签: javascript reactjs

我将道具从子组件B传递到父组件A.然后从父组件A传递给子组件C.当我将组件B中的数据传递给A时,一切都很好。但是当我尝试将状态设置为从父组件A中的组件B接收的数据时,状态不会立即设置。

我已将所有组件中的功能绑定在一起。

以下是我正在使用的函数代码。

在组件A中:

onchange=(data) => {
this.setState({
  selectedvalue: data
});
console.log(data)
console.log(this.state.selectedvalue)
}

在初始渲染中,我在console.log(data)中获得正确的值,但在undefied中接收console.log(this.state.selectedvalue)。更改数据后,console.log(this.state.selectedvalue)会显示初始值console.log(data)。即国家是在互动之后而不是在同一时间设定的。

我想将属性selectedvalue传递给另一个子组件C.

但由于状态未立即设置,我无法在数据更改时传递数据。

有什么方法可以通过父组件A将数据从子组件B传递给子组件C?

1 个答案:

答案 0 :(得分:0)

setState是异步的,您可以访问callback中的更新值:

this.setState({
  selectedvalue: data
}, () => console.log(this.state.selectedvalue));

如果将this.state.selectedvalue作为道具传递给子组件,则只要this.state.selectedvalue发生更改,子组件就会自动使用更新后的值重新呈现(除非您使用{{1}明确忽略它})。