我是 ReactJS 初学者,下面是我的代码。
for (var key in getContentState){
var string=getContentState[key]
if(highlighted_cols.includes(Object.keys(string).toString())){
arr=Object.values(string)
this.setState({
uniqueValues : arr
},()=>{
console.log("update")
console.log(this.state.uniqueValues)
})
}
}
getContentState 是一个看起来像 screenshot of getContentState
每当键与 highlighted_cols 匹配时,我都会尝试更新 uniqueValues。 highlighted_cols 由用户选择,在本例中为物种或农民,如您在 getContentState 中所见。
当用户只选择一列(物种或农民)时,它工作正常。但是当用户选择多个列(物种和农民)时,它只显示农民的唯一值。
最佳答案
看起来您正在通过更新 for
循环内的状态来覆盖状态 (uniqueValues
) 键。您是否尝试过只更新状态一次?
类似于:
let result = []
for (var key in getContentState) {
var string = getContentState[key]
if (highlighted_cols.includes(Object.keys(string).toString())) {
result = [
...result,
Object.values(string),
]
// or result.push(Object.values(string))
}
this.setState({
uniqueValues : result
}, () => {
console.log('update')
console.log(this.state.uniqueValues)
})
关于javascript - setState 没有按预期更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45840660/