javascript - redux reducer 的多个键

标签 javascript reactjs redux

我想使用对象来决定运行 reducer 的哪一部分。我当前的示例主要来自 redux 文档。示例:

export const todos = createReducer(initialState, {
    [ADD_TODO]: function (state, action) {
        return [ ...state, text: action.text ]
    }
})

function createReducer(initialState, handlers) {
    return function reducer(state = initialState, action) {
        if (handlers.hasOwnProperty(action.type)) {
            return handlers[action.type](state, action)
        } 

        return state;
    }
}

这对于大多数用例来说效果很好,但我更喜欢为多个操作运行相同的函数。例如,在典型的 reducer 中,我会执行以下操作:

case: ADD_TODO:
case: ADD_TODOS:
    // Do stuff and return state
    return [ ...state, text: action.text ]

我希望能够做这样的事情:

createReducer(initialState, {
    [ADD_TODO, ADD_TODOS]: function (state, action) { 
        // do stuff

对于干净的方法有什么想法吗?

最佳答案

您只需单独定义该函数,然后将其重复用于多个键:

function addTodo(state, action) {
    // do stuff
}

export default createReducer(initialState, {
    [ADD_TODO] : addTodo,
    [ADD_TODOS] : addTodo,
});

关于javascript - redux reducer 的多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40770043/

相关文章:

javascript - MVC View -> JavaScript-> Controller 方法->Javascript->Div标签

javascript - 在 v16.x 中使用来自旧版本 React 的 React 组件时出现问题

javascript - 如何在数组中查找对象并将其显示在 React 组件中?

javascript - 基于状态在 Redux 中调度

javascript - 如何在弹出窗口中选择语言(英语/法语)?

javascript - XMLHTTPRequest.status 返回 0 并且 responseText 在 FireFox 3.5 中为空

javascript - 比较点的总和与理想的点的总和

javascript - Meteor js,React 自定义图像重定向/meteor WebApp

javascript - axios 库中的超时功能不起作用

javascript - 为什么这段代码同时使用 useMemo 和 createSelector?