首页 > 解决方案 > 将多个变量传递给 Redux Action 创建者。什么格式?

问题描述

我对 Redux 还很陌生,但到目前为止我已经掌握了它。我正在设置一个操作文件,我需要将两个值传递给有效负载。

请让我知道该问题是否已在其他地方提出而我错过了。

谢谢!克拉姆尼克

ps 下面是我草拟的

    export const transferValues = (fromId, toId) => {
      return {
        type: VALUES_TRANSFER,
        payload: { fromId, toId }, //should it be array? not sure about syntax here
      };
    };

标签: react-redux

解决方案


你也可以有一个类型的动作{ type: string, fromId: number, toId: number }而不是一个单一的“有效载荷”。我认为这是一个偏好问题。你只需要相应地调整你的减速器。我个人更喜欢上面的尝试,因为它代表了单一属性,就像我在我的状态下也拥有它们一样。所以我可以做一个一对一的映射。例如:

// state
export type SessionState = {
  +id: number,
  +username: string,
  +sessionId: string,
}

// reducer here
[...]
    case SET_USERNAME:
      const setUsernameAction = ((action: any): SetUsernameAction)

      return {
        ...state,
        username: setUsernameAction.username,
        sessionId: setUsernameAction.sessionId,
      }
[...]

// example action
export const setUsername = (username: string, sessionId: string): SetUsernameAction => {
  return { type: SET_USERNAME, username, sessionId }
}

但是您肯定永远不会将数组用于多个属性。您将失去对属性的命名访问权限以及任何键入操作的机会。坚持使用对象,无论您要寻求什么解决方案。


推荐阅读