react-redux中有一段代码求解?

const posts = (state = {
  isFetching: false,
  didInvalidate: false,
  items: []
}, action) => {
  switch (action.type) {
    case INVALIDATE_REDDIT:
      return {
        ...state,
        didInvalidate: true//像是这里,明明state已经有了didInvalidate,那么...state里面有didInvalidate值 ,这里又设置了这个值,那会取哪个值呢,这种写法是es6语法?有谁知道吗,帮我解释下
      }
    
    case REQUEST_POSTS:
      return {
        ...state,
        isFetching: true,
        didInvalidate: false
      }
    case RECEIVE_POSTS:
      return {
        ...state,
        isFetching: false,
        didInvalidate: false,
        items: action.posts,
        lastUpdated: action.receivedAt
      }
    default:
      return state
  }
}
阅读 2.1k
2 个回答

你需要了解Object.assign

return {
        ...state,
        didInvalidate: true//像是这里,明明state已经有了didInvalidate,那么...state里面有didInvalidate值 ,这里又设置了这个值,那会取哪个值呢,这种写法是es6语法?有谁知道吗,帮我解释下
      }

相当于

return Object.assign({}, state, {
    didInvalidate: true
});

举个例子:

var o1 = {
  a: 1,
  b: 2
}

var o2 = Object.assign({}, o1, {
  a: 3
})

明明 o1 已经有 a 了,但 Object.assign 时又重新设置了一个 a

你的问题答案应该是一样的~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题