问题标签 [redux-toolkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - createAsyncThunk 和使用 redux-toolkit 编写 reducer 登录
我正在阅读createAsyncThunk
文档,对流程感到有点困惑。这是来自文档:
我必须在reducers
and中写extraReducers
什么?标准减速器逻辑?
我有这个CodeSandbox,我实现了旧的 redux 方式。现在,需要在redux-toolkit
其中实现。
redux - Redux 工具包单独的操作文件?
我最近发现了 redux 工具包,并且对如何使用它处理 action 和 reducer 分离有一些疑问。在 redux 工具包之前,我有单独的文件夹和文件用于 reducer 和操作,但在 redux 工具包教程的所有示例中,他们都将他们的操作/thunk 与他们的 reducer/slice 保存在同一个文件中。我将需要使用 axios 和 createAsyncThunk(我假设)来访问我的 API。将动作和减速器分开在单独的文件夹/文件中是否仍然最好?只使用 createAsyncThunk 和 createReducer 而不是 createSlice 会更好吗?在 createSlice 中,我仍然不完全理解 extraReducers 的用途以及它与 reducer 之间的区别。如果对这个库更熟悉的人可以提供帮助,我将不胜感激。
reactjs - 如何避免 redux-toolkit 中出现重复的 reducer
- 我避免了 registerSuccess 和 loginSuccess、registerFailure 和 loginFailure 的重复代码。
- 我分别需要不同的类型
reactjs - 使用 react-router-v5 和 redux-toolkit 登录时重定向页面
我正在使用 react-router-dom v5.2。
登录后,我希望我的页面重定向到/home
from /
。登录表单位于/
。
当我尝试在没有任何异步功能的情况下执行身份验证时(即,将用户名和密码与反应中的硬编码值进行比较),一切正常。
但是当我使用 express 和 mongo 执行身份验证时,登录时的重定向停止工作。如果我再次登录,则会发生重定向。受保护的路由仍然有效(如果用户未登录,则重定向到登录页面)。
这是我在 express + mongo 中使用 do auth 的问题的一个小演示,即。异步还原。这没有按预期工作。https://youtu.be/Zxm5GOYymZQ
这是我使用硬编码的用户名和密码(均为“测试”)进行身份验证的应用程序的链接。这里没有异步。这按预期工作。用户名和密码都是“测试”。https://poke-zoo.herokuapp.com/
这是App.js
:
这是ModalLogin.js
.
这是authSlice.js
.
我是否错误地将 react-router 与 redux-toolkit 一起使用?
reactjs - 我真的需要通过将动作包装到 dispatch() 调用中来调用它们吗?
我是 Redux 的新手,我从来没有努力在我的项目中使用它,因为有太多的样板文件,而且我很难阅读和理解 Redux 代码。2019 年 10 月,他们发布了 Redux-Toolkit,旨在解决样板文件过多的问题并使 Redux 的使用更容易,所以目前我正在将我的旧应用程序迁移到 React hooks 和 Redux-Toolkit,我正在通过示例来实现(我喜欢以这种方式学习东西),我不太明白我需要在哪里以及为什么需要使用useDispatch
钩子。所以我有这个简单的切片:
我导出减速器和像这样的动作:
然后我只需导入这些动作并直接调用它们,比如
但是我看到很多例子,人们通过将动作包装在 中来调用动作dispatch
,这是由useDispatch
钩子返回的。useDispatch
调用动作时我应该或不应该使用它的目的是什么?
reactjs - 如何使用 Redux Toolkit(使用 TypeScript)解决“AsyncThunkAction”类型中缺少“属性”类型?
我将 Redux Toolkit 与下面的 thunk/slice 一起使用。与其在状态中设置错误,我认为我可以使用此处提供的示例,通过等待 thunk 承诺解决来在本地处理它们。
我想我可以避免这样做,也许我应该通过error
在状态中设置一个,但我有点想了解我在哪里出错了。
传递resultAction
给时出现错误match
:
重击:
片:
感谢您的任何帮助!
firebase - 如何克服“A non-serializable value detection”
我正在使用 redux-toolkit 实现反应应用程序,并且在从 firestore 获取数据时出现此类错误。
在路径中的操作中检测到不可序列化的值:
payload.0.timestamps.registeredAt
在路径中的操作中检测到不可序列化的值:
payload.0.profile.location
。
前者的数据类型是firebase.firestore.Timestamp,后者是GeoPoint。
我认为两者都可能无法序列化,但我想获取这些数据并将它们展示给用户。
我怎样才能克服这些错误?
根据这个问题,我可能会这样写;
但是我不确定它是否安全,即使是这样,我也不知道如何编写路径动态方式,因为我的有效负载是数组。
如果有人提供一些线索,我将不胜感激。
javascript - redux-toolkit 操作未在 reducer 中触发
我正在尝试使用@reduxjs/Toolkit 触发一个简单的操作,但它不起作用。
我看到该动作已被调度,但就像切片减速器没有听它或其他东西一样。
这是一个最小的复制示例: https ://codesandbox.io/s/redux-toolkit-0tzxs?file=/src/index.js
testing - 测试 createAsyncThunk Redux Toolkit Jest
我是 redux 工具包库的新手,尤其是在测试方面。我浏览了文档并阅读了一堆关于这个主题的帖子和文章,但仍然很挣扎。我构建了一个简单的待办事项应用程序,并包含了几个 API 请求来涵盖异步情况。不过,测试这些结果有点挑战性。我希望就我的代码以及可以改进的地方获得一些建议和反馈。我还想对测试 createAsyncThunk 切片是否有意义提出一些意见。注意:我对测试 API 调用本身不感兴趣,并使用模拟数据重新创建成功的请求。
建设性的批评非常有帮助,将不胜感激
请看一下我的切片文件并进行测试
postSlice.ts
测试
postSlice.test.ts