下面是我尝试更新状态值的代码。我不明白为什么我的状态没有更新。我在每一行代码中添加了所有相应的控制台值。
handleFilter=(event)=>
{
console.log(this.state.answerStatus) // Before update 'all'
let val= event.target.value === "answered";
console.log(val); // true or false
this.setState({answerStatus:val});
console.log(this.state.answerStatus); // 'all'
}
状态更新是异步的。
要查看setState之后的更新值,请使用第二个参数,该参数采用回调函数,并在那里发布控制台日志。
js prettyprint-override">handleFilter = (event) => {
console.log(this.state.answerStatus); // Before update 'all'
let val = event.target.value === "answered";
console.log(val); // true or false
this.setState({ answerStatus: val }, () =>
console.log(this.state.answerStatus)
);
};
在ReactsetState
中是异步的,这意味着在调用setState
后不会立即修改sate值,这就是为什么您从console.log.获取旧值
为什么setState在reactjs异步而不是同步?
反应文档
handleFilter = (event) => {
console.log(this.state.answerStatus) // Before update 'all'
let val= event.target.value === "answered";
console.log(val); // true or false
this.setState({answerStatus:val}, () => {
console.log(this.state.answerStatus);
});
}
我试图在if语句中设置状态,但它不会这样做。结果,我需要从if语句中更新状态,在那个里我可以接收经度和纬度坐标,但它不会保存状态。若我在If语句之外的控制台中回显,我将只读取第一个setState值表单componentWillMount。有什么问题吗?我做错了什么?结构如下:
我不熟悉react native,我在这里尝试在加载组件时更新状态。但是,状态没有更新。 我做错了什么?
是否可以使用更新对象的属性? 类似于: 我试过: 还有这个: 第一个会导致语法错误,而第二个则什么也不做。有什么想法吗?
我正在尝试使用DidMount中的localStorage值更新状态,但它没有更新: 在第一个console.log中,我的值为1,在第二个中,它保持为空,不更新状态。
我正在从一个文件导出常量并将其导入另一个文件,如下所示: 常数.js App.js 我希望我的初始状态是在构造函数中设置的,然后在componentWillMount上,我希望使用常量文件中的值设置状态,然后再围绕组件和流添加进一步的逻辑。 但是,我发现,我的状态没有被更新,如果我在调用setState之后记录控制台日志,状态仍然没有定义,如果我引入一个方法,需要state中的值,那么在执行堆栈的
问题内容: 我觉得我已经在阳光下尝试了所有东西,但是一定缺少一些非常明显的东西。在下面,我试图将一个新项目推入数组并更新状态,但是无论我做什么,状态都不会从初始数组更改。 当我console.log newListItems时,新项目就包括在内,因此到目前为止所有工作都在进行,它是不会更新的实际状态。我想念什么? addItem方法: 我也没有在控制台中收到任何错误消息。 完整代码: 问题答案: