redux - Redux 中操作文件的用途是什么?
问题描述
我对理解 redux 有很大的问题。最糟糕的是,我必须将它与 vanillia js 一起使用,但首先我必须了解 redux 的元素。好的,我了解减速器。有状态和功能。但是行动?只有可能的操作的名称,例如:
const ADD = 'ADD'
export function add(number) {
return { type: ADD, number}
}
而且只有它给我的东西,然后在减速器的开关/案例中我有 ADD 我运行一些功能(来自减速器)。而且我不明白这个函数 add 应该做什么。我在 reducer 中有函数,那么为什么我需要返回类型和数字的东西呢?即使我有很多函数,action 也只会给我更多的名称、变量和函数,最终会造成很大的混乱和问题。而 redux 应该提供相反的东西。
而且,我真的理解这个问题是我不理解某些东西,如果我理解它,redux 应该给我清晰易懂的全局存储。
所以请,有人可以帮我吗?
解决方案
你所说的被称为“ Action Creators ”。
它们不是严格要求的。您可以dispatch
直接调用 like dispatch({ type: ADD, number})
。但是大多数人更喜欢使用动作创建者,以便他们可以调用dispatch(add(number))
. 它添加了一个抽象层,这样您就可以调用一个动作,而无需知道底层动作对象的结构。如果动作对象很复杂,它会简化事情。
redux 中的“动作”是一个具有type
属性的对象,并且还具有 reducer 执行动作所需的所有其他信息。在您的情况下,额外信息只是 a number
,但它可能更复杂。
这是您的操作:
{ type: ADD, number}
动作创建者是一个函数,它接受一些参数并使用这些参数来创建动作对象。
这是您的动作创建者:
export function add(number) {
return { type: ADD, number}
}
你的很简单,但这里有一个例子向你展示它可能更复杂。
export function updateUser(userId, changes) {
return {
type: UPDATE_USER,
payload: {
id: userId,
changes,
},
meta: {
timestamp: Date.now(),
}
};
}
这个函数除了创建动作之外什么都不做。它不会更新用户——这是 reducer 的工作。
如果你想减少样板的数量,你可以考虑使用Redux Toolkit包,它通过基于 reducer 自动创建操作来简化事情。
推荐阅读
- kotlin - 如何通过 gradle 任务执行具有依赖注入的特定类方法?
- python - Flask-Dropzone 上传后异步更新页面内容
- android - RN Android - 无法将没有 YogaNode 的子代添加到没有测量功能的父代
- flutter - Flutter SliverAppBar -- 允许滚动直到 SliverAppBar 不再可见
- php - Laravel 正则表达式用于友好的 url,字符串破折号的长度未知
- c# - 是 ASP.NET Core、Microsoft.FeatureManagement
TagHelper 设计不好? - firebase - 如何防止在 Vue 中渲染对象数组时出错
- typescript - 扩展接口并在扩展接口中使变量可选
- javascript - 输入框永远不会清除 - 但在 codepen 上工作正常
- python - 仅在 docplex solve() 中打印解决方案