【问题标题】:How to update the state in redux without using mapDispatchToProps() method如何在不使用 mapDispatchToProps() 方法的情况下更新 redux 中的状态
【发布时间】:2023-03-31 08:18:01
【问题描述】:

我正在尝试使用以下方法更新减速器状态: store.dispatch(NameOftheReducer(data)).

它会调用 Action 创建者,但不会更新 reducer 状态。我不想从我想要分派状态更改的地方创建任何 React 组件。有什么办法吗..提前谢谢

【问题讨论】:

  • 你能发布你的动作创建者吗?也许您没有返回操作?
  • 请发布您的动作创建者的内容以及您如何在减速器中处理动作。
  • 你能解释一下NameOftheReducer(data)应该是NameOftheActionCreator(data)

标签: redux reducers


【解决方案1】:

让我们假设 store 存储在全局某个地方

那么你就可以了

store.dispatch({
  type: "SOME_ACTION",
  value: "value"
})

如果你有类似的 actionCreator:

function someAction(value) {
   return {
     type: "SOME_ACTION",
     value: value
   }
}

现在您可以将它与 dispatch 一起使用:

store.dispatch(someAction("some value"))

我错过了什么吗?

【讨论】:

  • 我想知道为 store.dipatch 函数导出哪个“商店”。您可以使用通过“store = configReduxStore();”创建的商店功能。可能将它们与父组件周围的 Provider 组件一起使用
  • @Akshay 你是对的,但那是 redux 基础
【解决方案2】:

我认为您误解了组件和 redux 状态之间的关系。

redux 状态更改是通过操作完成的,无论哪个组件实际“使用”此状态。

只要你在某处定义了动作创建者,并且你的 reducer 处理了相应的action.type,那么你就可以在任何组件中使用这个动作创建者。

直接使用store 没有任何好处。 store 存储在context 中,使用context 通常被认为是不好的做法。 redux 的好处在于,它通过给你Providerconnect 来解决这个问题。

除了初始化应用程序时,当您想在组件中使用动作创建器时,应始终使用mapDispatchToProps

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多