我将道具从子组件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?
答案 0 :(得分:0)
setState
是异步的,您可以访问callback
中的更新值:
this.setState({
selectedvalue: data
}, () => console.log(this.state.selectedvalue));
如果将this.state.selectedvalue
作为道具传递给子组件,则只要this.state.selectedvalue
发生更改,子组件就会自动使用更新后的值重新呈现(除非您使用{{1}明确忽略它})。