React - отфильтровать некоторый объект из массива - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу отфильтровать некоторый объект из массива, но в настоящее время я знаю только удалить один объект, вот мой текущий код выглядит как

const deleteChatList = (dispatch) => async (id) => {
    dispatch({type: 'delete', payload: id}) // need to change id to list of id or list of object
}

...

const chatListReducer = (state, action) => {
    switch (action.type) {
        case 'fetch':
            return {...state, chatList: action.payload}
        case 'delete':
            return state.filter((chatList) => chatList.id !== action.payload)
        default:
            return state;
    }
}

Любой может помогите мне?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Для тех, кто ищет ответ, это работает

case 'delete':
            return {...state, chatList: state.chatList.filter((chat) => !action.payload.includes(chat))}
0 голосов
/ 29 апреля 2020

Вы можете использовать Set для проверки членства. Объекты также могут работать.

const deleteChatList = (dispatch) => async (chatListDeleted) => {
    dispatch({type: 'delete', payload: [id1, id2, id3]}) 
}
...

const chatListReducer = (state, action) => {
    switch (action.type) {
        case 'fetch':
            return {...state, chatList: action.payload}
        case 'delete':
            const idSet = new Set(action.ids)
            return state.filter((chatList) => idSet.has(chartList.id))
        default:
            return state;
    }
}
...