# @exodus/multi-account-redux 中文文档

规范地址：https://npmcn.com/package/%40exodus/multi-account-redux/

版本：3\.0\.2
npm 元数据更新时间：2026-11-12T19:28:12.192Z
中文译文更新时间：2026-11-14T03:55:42.272Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40exodus/multi-account-redux
原文对照：https://npmcn.com/package/%40exodus/multi-account-redux/?lang=original
项目主页：https://github.com/ExodusMovement/exodus/tree/master/libs/libraries/multi-account-redux
源码仓库：https://github.com/ExodusMovement/exodus

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：59 kB，12 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2023-05-03T15:22:02.238Z
- 最新版本发布：2026-11-12T19:28:11.866Z
- 近 30 天下载量：21529（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 3 个）

## 中文简介

UTI 用于存储每瓦莱特账户每个资产数据的再切片

## 安装

```sh
npm install @exodus/multi-account-redux
```

也可以使用：`pnpm add @exodus/multi-account-redux`、`yarn add @exodus/multi-account-redux`、`bun add @exodus/multi-account-redux`

## README

# `@exodus/multi-account-redux`

下列形状的状态管理选择器和公用设备:

```js
{
  [yourStateSliceName]: {
    [walletAccount]: {
      error: null,
      loaded: true,
      data: {
        [assetName]: {}, // TxSet/UtxoCollection/etc.
      },
    },
  }
}
```

## 安装

```sh
pnpm add @exodus/multi-account-redux
```

## 使用量

```js
import { TxSet } from '@exodus/models'
import { createReduxModuleHelper } from '@exodus/multi-account-redux'

const helper = createReduxModuleHelper({
  slice: 'someAssetSourceRelatedData',
  createInitialPerAssetData: () => TxSet.EMPTY,
})

const myReduxModule = {
  id: 'someAssetSourceRelatedData',
  initialState: helper.createInitialState(),
  eventReducers: {
    someAssetSourceRelatedData: (state, data) => {
      // check source code for other utils for merging/resetting state
      return helper.setAccounts(state, data)
    },
  },
  selectorDefinitions: [...helper.selectorDefinitions, ...customSelectorDefinitions],
}
```

## 类型脚本投影推论

让帮助者从初始化器中推断出每个资产的数据. 投影参数,选择器名称, 然后在不标注每个选择者的情况下推断返回类型:

```ts
const helper = createReduxModuleHelper({
  slice: 'balances',
  createInitialPerAssetData: () => ({ balance: 0 }),
  assetSourceDataSelectors: [
    { name: 'balance', selector: (data) => data?.balance ?? 0 },
    { name: 'label', selector: (data) => String(data?.balance ?? 0) },
  ],
})
```

收到预测 `null` 或者说 `undefined` 资产未知时,或无资产时 `createInitialPerAssetData` 资产没有存储数据。 每个案子都处理好 选择器.

在提供明确数据或资产类型时,使用两个调用,因此预测类型仍然可以 推断:

```ts
type Balance = { balance: number }
type Asset = { name: string; initialBalance: number }

const helper = createReduxModuleHelper<Balance, Asset>()({
  slice: 'balances',
  createInitialPerAssetData: ({ asset }) => ({ balance: asset.initialBalance }),
  assetSourceDataSelectors: [{ name: 'balance', selector: (data) => data?.balance ?? 0 }],
})
```

原画 `createReduxModuleHelper<Balance>({...})` 表格仍然支持。 有了预测, 它保存数据类型,但将投影名称扩大到字符串和结果 `unknown`。 。 。 . 使用双调形式精确投影类型.

## 常见问题

### @exodus/multi-account-redux 是什么？

UTI 用于存储每瓦莱特账户每个资产数据的再切片

### 如何安装 @exodus/multi-account-redux？

在项目目录运行 npm install @exodus/multi-account-redux，或使用 pnpm add / yarn add / bun add。

### @exodus/multi-account-redux 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @exodus/multi-account-redux 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @exodus/multi-account-redux 可以商用吗？

@exodus/multi-account-redux 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @exodus/multi-account-redux 的下载量有多少？

根据 npm 官方下载统计，@exodus/multi-account-redux 在 2026/10/14 – 2026/11/12 这 30 天内被下载 21,529 次，日均约 718 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @exodus/multi-account-redux 还在维护吗？

最新版本 3\.0\.2 发布于 2026/11/13（1 天前）；至今共发布 20 个版本，其中过去 12 个月发布了 3 个；首次发布于 2023/05/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

