因此,我正尝试在减速器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
方法用于连接两个或多个数组。此方法不会更改现有数组,但会返回一个新数组,其中包含联接数组的值。
答案 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
});