动作创作者是否有必要 return 一个动作?

Is it necessary for action creators to return an action ?

我有一个动作创建器,它接收一个 ID 和一个回调函数。它向服务器发送一个请求来做一些事情并且 returns 是一个虚拟动作。我想在这里做的就是调用回调函数并退出,因为那个虚拟操作对我没有用,例如喜欢 post。我只需要服务器知道用户喜欢 post,我不需要一些状态更改,我可以通过回调更改喜欢按钮的状态。所以我的问题是我们是否需要一个动作创建者来 return 一个动作。这是我的代码

export const deleteProduct = (id,cb) => async (dispatch) => {
   let res = await axios.delete(`${BASE_URL}/api/v1/product/${id}`,
                   {withCredentials:true})
   cb();
    dispatch({type: DUMMY, payload : res.data});       
};

删除产品后,我可以在触发回调时从列表中隐藏该产品。我需要显式调用调度还是可选的。 ?我正在使用 Redux-thunk 来处理 axios promises。

redux-thunk 中,调度完全是可选的。事实上,其中一项 main motivations 是提供有条件的调度。

所以是的,你完全可以这样做:

export const deleteProduct = (id,cb) => async () => {
   let res = await axios.delete(`${BASE_URL}/api/v1/product/${id}`,
                   {withCredentials:true})
   cb();    
};

但是,我认为这打破了 redux 的主要概念之一,即 unidirectional data flow。这个概念是数据应该只在一个方向上流动。视图调度一个操作来更新商店以触发渲染来更新视图。视图不应分派和操作并根据结果重新呈现。

基本上,如果你想在项目被删除后从列表中隐藏它,而不是在回调中这样做,你应该调度一个动作来更新商店中的数据并让 react-redux 重新渲染没有删除项的组件。