将SetTimeOut与React / redux调度功能一起使用时出错

时间:2020-10-06 19:24:22

标签: javascript reactjs redux

因此,我具有处理错误消息的状态,并且该状态有两个操作

设置消息的第一个:

export const setNotification = (message) => {
return {
    type: "SET_NOTIFICATION",
    data: {
        message,
        visibility: "visible"
    }
}

}

第二秒是在5秒钟后删除邮件:

export const clearNotification = (seconds=5) => {
setTimeout(()=>  { return {
    type: "REMOVE_NOTIFICATION",
    data: {
        message: "",
        visibility: "hidden"
    }
}}, seconds * 1000)

}

当调用第二个名为ClearNotification的函数时,出现此错误:

Error: Actions must be plain objects. Use custom middleware for async actions.

为什么会收到此消息以及如何解决?

谢谢。

1 个答案:

答案 0 :(得分:1)

那是因为您不能将函数作为操作返回。这些动作是形状为“ {{type:string,... any}””的简单对象。如果您想返回一个函数,则应该在Google上搜索redux-thunk或类似redux-saga或redux-observable之类的东西,但是这些操作很棘手。

此链接提供了您要执行的操作的示例。 https://github.com/reduxjs/redux-thunk#motivation