@exodus/multi-account-redux
下列形状的状态管理选择器和公用设备:
{
[yourStateSliceName]: {
[walletAccount]: {
error: null,
loaded: true,
data: {
[assetName]: {}, // TxSet/UtxoCollection/etc.
},
},
}
}
安装
pnpm add @exodus/multi-account-redux
使用量
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],
}
类型脚本投影推论
让帮助者从初始化器中推断出每个资产的数据. 投影参数,选择器名称, 然后在不标注每个选择者的情况下推断返回类型:
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 资产没有存储数据。 每个案子都处理好
选择器.
在提供明确数据或资产类型时,使用两个调用,因此预测类型仍然可以 推断:
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。 。 。 .
使用双调形式精确投影类型.