首页 > 解决方案 > Redux 中操作文件的用途是什么?

问题描述

我对理解 redux 有很大的问题。最糟糕的是,我必须将它与 vanillia js 一起使用,但首先我必须了解 redux 的元素。好的,我了解减速器。有状态和功能。但是行动?只有可能的操作的名称,例如:

const ADD = 'ADD'

export function add(number) {
  return { type: ADD, number}
}

而且只有它给我的东西,然后在减速器的开关/案例中我有 ADD 我运行一些功能(来自减速器)。而且我不明白这个函数 add 应该做什么。我在 reducer 中有函数,那么为什么我需要返回类型和数字的东西呢?即使我有很多函数,action 也只会给我更多的名称、变量和函数,最终会造成很大的混乱和问题。而 redux 应该提供相反的东西。

而且,我真的理解这个问题是我不理解某些东西,如果我理解它,redux 应该给我清晰易懂的全局存储。

所以请,有人可以帮我吗?

标签: reduxaction

解决方案


你所说的被称为“ 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 自动创建操作来简化事情。


推荐阅读