javascript - setState 没有按预期更新

标签 javascript reactjs

我是 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/

相关文章:

reactjs - react 固定大小的文本 block

javascript - 使用 JavaScript 从链接中删除 href

javascript - 在jsp中使用jquery替换div内容

javascript - 异步过滤 Promise 数组

javascript - Typescript - React 中的多种类型情况如何

reactjs - 离开首页时,React-router V-5.2.0无法正常工作

javascript - React Js 中的路由

javascript - 如何使用 Material UI Card 和 CardMedia 在背景图像上添加一些文本

reactjs - React 项目中的 typescript 不再识别 'as' 关键字

javascript - 如何获取关联数组作为 jQuery.map 的输出?