【问题标题】:How to filter inside of map in redux reducer如何在redux reducer中过滤地图内部
【发布时间】:2021-10-29 10:01:48
【问题描述】:

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

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

password: "$2b$12$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 使用的我的动作创建器。

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

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

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

【问题讨论】:

    标签: reactjs redux redux-thunk


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      相关资源
      最近更新 更多