如何将Redux Slice的initialState设置为NULL?
Redux Slice设置initialState为null的解决方案
你的报错Uncaught ReferenceError: initialState is not defined是因为代码里只写了initialState变量名,但从未声明并赋值。要实现initialState为null,有两种简单的正确写法,同时还要注意reducer里的空值处理:
写法一:直接在createSlice中赋值
import { createSlice } from '@reduxjs/toolkit'; export const slice = createSlice({ name: 'initial', initialState: null, // 直接将initialState设置为null reducers: { ADDS(state, action) { // 处理state为null的情况,避免解构空值报错 return { ...(state || {}), product: action.payload, } } } }); export const { ADDS } = slice.actions; export default slice.reducer;
写法二:先声明变量再引用
如果你想单独管理initialState变量,也可以先声明再传入:
import { createSlice } from '@reduxjs/toolkit'; // 声明并赋值initialState为null const initialState = null; export const slice = createSlice({ name: 'initial', initialState, reducers: { ADDS(state, action) { return { ...(state || {}), product: action.payload, } } } }); export const { ADDS } = slice.actions; export default slice.reducer;
关键注意点
因为初始state是null,直接使用...state会抛出TypeError: Cannot convert undefined or null to object,所以用state || {}做兜底,当state为null时,解构一个空对象,保证代码正常运行。
内容的提问来源于stack exchange,提问作者user17016241
相关产品推荐
相关产品推荐

