如何在redux reducer中过滤地图内部

How to filter inside of map in redux reducer

我无法删除我的 redux 中数组内的字符串。我在控制台上做了一些试验和错误,我成功地过滤了数组并删除了字符串。但是一旦我派遣我的动作创建者并发送有效负载和过滤器它就不起作用了。

这是示例数据。我想做的是删除或过滤掉任务数组中的数据。

password: "b$Hb5AAO/pDSt2SpGpGUnPQOGuUAcTWjSSf.GjUxQ.LRBI6u2dRTGby"
task: (5) ["asd", "sd", "qwe", "zxc", "cvb"]
time: "2021-08-22T13:26:19.337Z"
username: "admin"
__v: 0
_id: "6122507bc5867440784a9421"

这是我的快递。

const deleteRequest = (e) => {
        e.preventDefault();
        dispatch(removeTask(postdata.id,postdata.post));
}

这是 redux-thunk 使用的我的 action creator。

export const removeTask = (id,post) => async (dispatch) => {
    try {
        await api.deleteTask(id,post);
        dispatch({ type: 'DELETE', payload: post });
    } catch (error) {
        console.log(error);
    }
}

这是我在 redux 上的减速器,我试图在其中过滤掉我将发送的有效负载,但它不起作用,所以请检查它。

case 'DELETE':
     return {
        post: state.post.map(data => data.task.filter((post) => post !== action.payload))
}

我认为您的 state.post 是一个对象,因此您不需要映射。您需要过滤唯一的任务数组。 你能试试这个吗?

case 'DELETE':
 return {
    ...state,
    post: state.post.task.filter((post) => post !== action.payload)
}