L. *_*rto 5 javascript redux redux-reducers redux-toolkit
当我在extraReducers切片内部添加特定操作时,出现以下错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'type')。
例子:
import { createSlice } from '@reduxjs/toolkit'
export const mySlice = createSlice({
name: 'name',
initialState,
extraReducers: (builder) => {
// If I console.log action2 here, it turns out to be undefined
builder.addCase(action1, () => ...)
builder.addCase(action2, () => ...) // when I add this specific action I get the error.
},
reducers: {
...
},
})
Run Code Online (Sandbox Code Playgroud)
action2的定义类似于action1另一个文件中的 :
import { createAction } from '@reduxjs/toolkit'
export const action2 = createAction(
'action2'
)
Run Code Online (Sandbox Code Playgroud)
为什么action2在 中未定义mySlice?我错过了什么?
更新:来自文档:
使用 createAction 生成的操作创建器可以使用计算属性语法直接用作此处的键。
如果我正确理解了这句话,我可以替换这部分:
builder.addCase(action2, () => ...)
有了这个:
builder.addCase("action2", () => ...)
这确实可以解决问题。这个解决方案正确吗?
即便如此,理解为什么在与第一种方法一起使用时action2会出现这种情况可能会很好。undefined
您很可能遇到循环导入依赖问题。是否还有其他切片文件也导入此文件?如果是这样,通常会导致其中一个切片在另一个文件的调用运行时未初始化createSlice,因此导入的所有操作创建者仍然是undefined.
https://redux-toolkit.js.org/usage/usage-guide#exporting-and-using-slices
RTK 版本1.7.0-beta.1实际上可以通过延迟实例化减速器来解决此问题。请尝试一下,看看它是否可以为您解决问题:
https://github.com/reduxjs/redux-toolkit/releases/tag/v1.7.0-beta.1
| 归档时间: |
|
| 查看次数: |
8343 次 |
| 最近记录: |