reactjs - react : Passing props to parent returns <empy string>

标签 reactjs state parent

首先让我将代码放在这里,然后我将解释发生了什么。

Parent.js

callback = (id) => {
    this.setState({des: id});
    console.log(this.state.des);
}

//on my render i have this when i call my child component
<Child callback={this.callback}/>

Child.js

handleChange = (event) => { 
    let des = event.target.value;
    console.log(des);
    this.props.callback(des);
};

当我 console.log在我的子组件上,它返回我想要传递的数据,但是当我在 calback 中执行此操作时在我的父组件上,它返回 <empty string>我不知道为什么会发生这种情况。

最佳答案

发生这种情况的原因是 setState 是一个异步函数。当您尝试记录 this.state.des 时,状态尚未设置。如果您想控制台记录您的状态以查看它是否已按预期设置,您要做的就是将其记录在 this.setState 的回调中(因此一旦我们知道状态已设置,它就会记录)。在您的parent.js中尝试类似以下内容:

callback = (id) => {
   this.setState({des: id}, () => {
       console.log(this.state.des); 
   });
}

参见 React Docs对于 setState 了解更多详细信息

关于reactjs - react : Passing props to parent returns <empy string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60085671/

相关文章:

javascript - 为什么我无法在reactjs中的渲染中访问组件状态

javascript - 使用 Re-base 时 Firebase 在 React 中绑定(bind)和解除绑定(bind)

CSS - 如何只针对 parent 而不针对 child

java - 使用Java JsonPath获取JSON父节点

javascript - 单击它时防止展开 'React-select'

reactjs - React Native FlatList 与 ListView

javascript - 在刷新来自 firebase 的新数据之前清除 react 状态字段

javascript - 避免简单增量器中的状态

angularjs - 不同状态不显示模板内容

jquery - 如果选中元素,则添加类,但加载时不单击