如何使用createEntityAdapter设置initialState初始状态
基于createEntityAdapter设置带固定常量的初始状态方法
createEntityAdapter 实例提供了getInitialState方法用于生成符合规范的初始状态结构,你只需将固定常量数据通过适配器内置的方法写入该状态即可,完整实现代码如下:
import { createSlice, createEntityAdapter } from "@reduxjs/toolkit"; export const cardAdaptor = createEntityAdapter(); // 你的固定常量数据,每条数据需包含唯一标识字段,默认取值为id const FIXED_CARD_DATA = [ { id: 1, title: "卡片1", desc: "固定卡片内容1" }, { id: 2, title: "卡片2", desc: "固定卡片内容2" }, { id: 3, title: "卡片3", desc: "固定卡片内容3" } ]; // 生成适配器标准初始状态 const initialState = cardAdaptor.getInitialState(); // 将固定常量写入初始状态 cardAdaptor.setAll(initialState, FIXED_CARD_DATA); const cardSlice = createSlice({ name: "cards", initialState, reducers: {} }); export default cardSlice.reducer;
注意事项
- 如果你的实体唯一标识不是默认的
id字段,创建适配器时需要额外传入selectId配置,示例:const cardAdaptor = createEntityAdapter({ selectId: (card) => card.cardNo // 用cardNo字段作为主键 }); - 如果需要在状态中添加适配器标准结构(ids、entities)之外的自定义字段,可以传入参数给
getInitialState,示例:// 新增loading、error两个自定义状态字段 const initialState = cardAdaptor.getInitialState({ loading: false, error: null });
内容的提问来源于stack exchange,提问作者ali
相关产品推荐
相关产品推荐

