【问题标题】:How ACTION data is send to REDUCER in redux在 redux 中 ACTION 数据如何发送到 REDUER
【发布时间】:2021-12-16 18:35:58
【问题描述】:

我已经制作了一个计数器应用程序并使用 redux 进行状态管理,并且工作正常,但我很困惑即使我们没有在 reducer 文件中导入动作函数,reducer 函数如何获取动作数据。

使用以下架构:

这是ACTION文件代码:

export const inc = () => {
   return{
       type: "INCREMENT"
   }
}

export const dec = () => {
    return{
        type: "DECREMENT"
    }
 }

这是reducer文件代码:

const InitialState = 0;

const changeNumber = (state = InitialState, action) => {
    switch (action.type){
        case "INCREMENT": return state + 1;
        case "DECREMENT": return state - 1;
        default: return state;
    }
}

export default changeNumber;

reducer 文件函数有两个参数state and action。当前状态值是0,动作值是来自动作文件的object,但如何?

如您所知,store white 也持有全局状态并为此使用 redux 官方文档。

【问题讨论】:

    标签: redux react-redux


    【解决方案1】:

    当你调用store.dispatch(myAction) 时,store 然后用reducer(lastState, myAction) 调用reducer,获取结果并将结果作为新状态。

    如果您使用configureStorecombineReducers 将多个reducer 合并为一个,则每个操作都会发送到其中的每个reducer。

    一般来说:当您谈论“动作文件”并使用字符串类型时,我想让您意识到您可能正在学习一种非常过时的 Redux 风格。现代 Redux 不使用 switch..case reducer、ACTION_TYPES、不可变的 reducer 逻辑、createStore 或 connect,并且仅占您现在编写的代码的 25%。学习现代Redux,请关注官方Redux Essentials Tutorial

    即使你想学习旧式 Redux,你可能仍然在关注过时的文档,因为我们不再推荐“动作文件”或“动作文件夹”。如果你想学习老式的 Redux,我建议你关注官方的Redux Fundamentals Tutorial。但默认情况下,选择现代 Redux。这是自 2019 年以来的官方建议。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2023-03-06
      • 2023-03-26
      • 2017-09-30
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多