使用map es6,对象属性的setState数组失败

时间:2018-03-05 10:09:59

标签: javascript reactjs ecmascript-6

尝试更新对象数组的状态,但不知道它在状态中是否反映。

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?)
}

无法弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:0)

您正在尝试映射对象。只能使用es6映射数组。您可以将main变量结构更改为数组,也可以使用lodash map来映射对象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?)
}