繁体   English   中英

对象属性的setState数组反应失败,映射为es6

[英]react setState array of object property failed with map es6

尝试更新对象数组的状态,但不知何故不能反映该状态。

set_is_core = (selected_id) => {

  const { main } = this.state

  const next_main = main.map(o => {
    if(o.main_id === selected_id){
      console('trigger') //true
      return ({
        ...o,
        is_core: true
      })
    }
    return o
  })

  this.setState({
    main: next_main
  }, ()=> console.log(this.state.main.some(o => o.is_core))//false?)
}

无法找出问题所在。

您正在尝试映射对象。 使用es6只能映射阵列。 您可以将main变量结构更改为数组,也可以使用lodash映射,这将允许您映射到对象https://lodash.com/docs#map

例如:

import {map} from 'lodash'

...

set_is_core = (selected_id) => {

  const { main } = this.state

  const next_main = map(main, (o) => {
    if(o.main_id === selected_id){
      console('trigger') //true
      return ({
        ...o,
        is_core: true
      })
    }
    return o
  })

  this.setState({
    main: next_main
  }, ()=> console.log(this.state.main.some(o => o.is_core))//false?)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM