通过 connect HOC 将 RTK 切片操作与类组件一起使用,是否需要调度?

问题描述 投票:0回答:1

我一直在使用 Redux connect HOC 开发带有类组件的旧代码库。之前介绍的RTK切片很少。我有点困惑为什么这两种使用切片操作的方法可以正常工作(可以在 Redux Toolkit 中看到这些方法更新状态并出现在操作面板(左侧)中。

2种方式:

  1. 与调度(updateAbc)
  2. 无需调度(updateXyz)

参见下面的示例

const mapDispatchToProps = (dispatch) => {
    return {
        updateAbc: (params) => dispatch(updateAbc(params)),
        updateXyz,
    }
}

两者均来自切片文件:

const sampleSlice = createSlice({
   name: 'sample',
   initialState: {},
   reducers: {
      updateAbc: () => { /* do something */},
      updateXyz: () => { /* do something */}
   }
})
const { actions, reducer } = sampleSlice
export const {
    updateAbc,
    updateXyz,
} = actions

enter image description here

为什么两者都在工作,或者我错过了一些东西,或者它们只是两种有效的方式(但我不知道它如何在没有显式调用调度的情况下调度它)?

reactjs redux redux-toolkit rtk
1个回答
0
投票

为什么两者都在工作,或者我错过了什么,或者它们只是 两种有效的方式(但我不明白它如何在没有 显式调用调度)?

它们都是装饰

connectDispatchToProps
帮助器中动作的有效方法。有关详细信息,请参阅对象速记形式。请注意,重点是我的。

mapDispatchToProps
可能是一个对象,其中每个字段都是一个动作 创造者。

import { addTodo, deleteTodo, toggleTodo } from './actionCreators'

const mapDispatchToProps = {
  addTodo,
  deleteTodo,
  toggleTodo,
}

export default connect(null, mapDispatchToProps)(TodoApp)

在这种情况下,React-Redux 将您商店的

dispatch
绑定到 每个动作创建者都使用
bindActionCreators

这对您的代码意味着

updateXyz
被包装在对
dispatch
“自动神奇地”的调用中。

const mapDispatchToProps = (dispatch) => {
  return {
    updateAbc: (params) => dispatch(updateAbc(params)),
    updateXyz, // <-- dispatch bound to action creator
  }
}

比较典型的

mapDispatchToProps
会写成这样:

const mapDispatchToProps = {
  updateAbc,
  updateXyz,
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.