React Redux-检查Reducer的ID是否处于状态



我正在努力防止重复的消息被推入状态。下面是我的留言。

const initialState = List([]);
const messagesReducer = {
[actionTypes.ADD_NEW_RESPONSE_MESSAGE]: (state, { text }) => state.push(createNewMessage(text, MESSAGE_SENDER.RESPONSE)),
}
export default (state = initialState, action) => createReducer(messsagesReducer, state, action);

您可以使用高阶函数'some'检查数组是否重复。此外,目前您的reducer返回数组的长度,因为.push就是这样工作的,这可能不是您想要的。

在下面的代码中,我假设消息的id保存在消息对象内的属性"id"中。

const initialState = [];
const messagesReducer = {
[actionTypes.ADD_NEW_RESPONSE_MESSAGE]: (state, { text }) => { 
if (!state.some(m => m.id === MESSAGE_SENDER.RESPONSE)) return [...state, (createNewMessage(text, MESSAGE_SENDER.RESPONSE))];
return state;
},
}
export default (state = initialState, action) => createReducer(messsagesReducer, state, action);

考虑到您正在处理一个列表,并且您想在推送之前检查Id是否存在,我会采用以下方法:

//Returns a True or False depending on if it finds the item or not
let find_status = !!state.find(item => item.id === message.id)
find_status?state.push(message):state;

相关内容

  • 没有找到相关文章

最新更新