在reducer中处理更新状态的更好方法

时间:2020-05-22 23:52:55

标签: reactjs redux react-redux

因此,我正尝试在减速器GEM_PATH中学习react-redux。我需要首先检查GET_COMMENTS中是否已经有项目,所以我尝试使用state.comments语句,它可以工作。但是也许还有更好的方法来处理它?<​​/ p>

if-else

更新:我决定采用case 'GET_COMMENTS': let list = [] if (state.comments.length > 0) { // check if there's an item list = state.comments // pass existing state action.payload.data.map(comment => { // map through new data list = [...list, comment] // dont know if this is the right way but it works }) } else { list = action.payload.data // if state.comments is empty directly pass new data } return { ...state, comments: list, next: action.payload.next } 的答案,因为我认为这是最好的方法。今天,我了解到Gabriele方法用于连接两个或多个数组。此方法不会更改现有数组,但会返回一个新数组,其中包含联接数组的值。

2 个答案:

答案 0 :(得分:2)

是的,这是正确的。我会简化您的处理方式

...
case 'GET_COMMENTS':
  return {
    ...state,
    comments: [...state.comments, ...action.payload.data]
    next: action.payload.next
  };

注意:我认为action.payload.comments是一组新的注释。初始状态为{ comments: [] }

答案 1 :(得分:2)

我会做

case 'GET_COMMENTS':
  return ({
    ...state,
    comments: state.comments.concat(action.payload.data),
    next: action.payload.next
  });