javascript - 在使用 redux 使用react时,业务逻辑应该去哪里(action creators 或 reducers)?

标签 javascript reactjs redux react-redux middleware

这个问题可能有重复,但他们并没有很好地回答我的问题。所以我决定开始一个新线程。

所以我正在尝试为电子商务应用程序创建一个简单的购物篮组件....

以下是 reducer 和 action 文件的代码:

actions.js

export const incrementQuantitySuccess = (basketProducts) =>{
    return {
        type: actionTypes.INCREMENT_QUANTITY_SUCCESS,
        basketProducts:basketProducts
    }
}

export const incrementQuantity = (line) => {
    return (dispatch,getState) => {  

       /*LOGIC for increment quantity*/
        const basketProducts = getState().basket.productsInBasket;
        const updatedBasketProducts = basketProducts.map((product) =>{        
            if (product.id === line.id){
                product.quantity += 1;
                product.total = product.quantity * product.price;
            }

            return product;
        });
        /***************/  

        dispatch(incrementQuantitySuccess(updatedBasketProducts));
  }
}

reducer.js

const incrementQuantitySuccess = ( state, action ) => {
    return updateObject(state,{
        productsInBasket:action.basketProducts,
        loading:false
    });
}

const reducer = (state= initialState,action) => {
    switch(action.type){
        case actionTypes.GET_BASKET: return getBasket(state,action);
        case actionTypes.INCREMENT_QUANTITY_SUCCESS: return incrementQuantitySuccess(state,action);
        default:return state;
    }
}

export default reducer;

现在我已经将增量逻辑放在我的 action.js 文件中。

我发现了各种关于在分配业务逻辑时在 reducer 和 action creator 之间保持平衡的建议,有些人告诉我要让 reducer 保持愚蠢和愚蠢。

我的问题是增量逻辑应该放在哪里?我在 redux.js.org 上浏览了几篇关于业务逻辑应该在哪里的文章,但我仍然不清楚。

还有这个特殊的用例,我不确定我是否需要像 redux-logic 这样的中间件。

我是新手。请对此进行指导。

提前致谢

最佳答案

其中一种做法是,您应该保持 reducer 和操作纯净,真正的副作用应该发生在您的中间件内部。通过这种方法,您将保持 Action 和缩减器良好和干净,并且您可以完全专注于您的中间件,因为它们将成为唯一可能发生副作用的地方。

当我观看 Nir ​​Kaufman 的演讲时,我真的很惊讶,我鼓励您观看他在 ReactNYC 上的演讲 Advanced Redux Patterns - Nir Kaufman @ ReactNYC .当我在 Redux 上苦苦挣扎时,这个视频对我帮助很大。

另外还有来自 Nir ​​的关于 Redux 和中间件的第二次演讲。你可以在这里查看第二个 Advanced Redux: Design Patterns and Practices - Nir Kaufman | JSHeroes 2018

希望对您有所帮助!

关于javascript - 在使用 redux 使用react时,业务逻辑应该去哪里(action creators 或 reducers)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571233/

相关文章:

javascript - 我正在尝试创建一个 javascript 页面来将信息输入到表单中,但它不起作用

javascript - 使用 HTML5 在本地写入 CSV 文件

javascript - es6 传播运算符如何处理对象到 Prop 的转换?

javascript - 在页面入口处仅显示一次覆盖(不是路线更改)。如何?

reactjs - 通过 componentDidMount 中的 props 设置状态时出现问题

javascript - 返回除特定索引之外的数组索引

javascript - 为什么这个函数调用会破坏程序并导致 undefined variable ?

reactjs - react : How to change status of toggle switch inside map?

javascript - 当另一个组件发生某些事情时 react : How to update one component,

javascript - 单击图标时如何在用户对象内设置 userId