反应,更新状态

时间:2017-02-25 11:08:59

标签: reactjs immutability

state = {
  blog: {
    name: 'abc',
    score: 5
  }
}


var { blog } = this.state

//你想做blog.score = 5

1. blog = _.merge({}, blog, {
  score: 3
})


2. blog = {
    ...blog,
    score: 5
   }

3. blog = update(blog, {
     $set: {
       score: 5
     }
   }

this.setState({blog})

我不知道是否还有其他方法,但是对这些方法有什么偏好吗?

怎么样

state = {
  site: { 
    blog: {
      name: 'abc',
      score: 5
    }
  }
}


site = _.merge({}, site, {
  blog: {
    score: 5
  }
})


site = update(site, {
  blog: {
    $set: {
      score: 5
    }
  })


this.setState({site})

2 个答案:

答案 0 :(得分:1)

已经提供了将先前状态与新状态合并的实用程序。

let newState = React.addons.update(this.state, {
  blog: {
    score: { $set: 5}
  }
});
this.setState(newState);

More details about this addon

答案 1 :(得分:0)

_.merge是一种合理的解决方案,但推荐的方法是使用https://github.com/kolodny/immutability-helper,因为react-addons-update被视为传统附加组件。

相关问题