我真的很抱歉我发布了这个,因为它听起来很疯狂。 我得到了一种方法来验证我在模态内的表单中的一些输入。
所以我检查每个 this.state.variable 并推送到辅助数组,然后将其设置为原始 fieldErrors 数组。
但由于某些原因,当我在设置前检查aux
时,长度为5。
设置为 fieldErrors 后,我注意到长度为 0。这是怎么回事?
代码如下:
_validateMissingFields: function() {
var aux = [];
if (this.state.variable1.length === 0) {
aux.push('variable1');
}
if (this.state.variable2.length === 0) {
aux.push('variable2');
}
if (this.state.variable3.length === 0) {
aux.push('variable3');
}
if (this.state.variable4.length === 0) {
aux.push('variable4');
}
if (this.state.variable5.length === 0) {
aux.push('variable5');
}
console.log(aux.length) // -> shows 5
this.setState({ fieldErrors: aux });
}
稍后,当我在此方法之后执行 this.state.fieldErrors.length
时,显示 0。
顺便说一句,这就是我初始化 fieldErrors
的方式:
getInitialState: function() {
return {
variable1: '',
variable2: '',
variable3: '',
variable4: '',
variable5: '',
fieldErrors: []
}
},
最佳答案
React setState 是异步的,这就是为什么不能立即读取 this.state 的原因。
有关更多信息,请参阅文档 https://facebook.github.io/react/docs/react-component.html#setstate
关于javascript - 在数组上设置状态在 native react 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927457/