使用 redux,为什么我不能直接将 json 文件导入到 createSlice?

Using redux, why can't I import a json file directly to createSlice?

为什么这样做:

import myData from './data.json';

const initialState = myData;

const wevaSlice = createSlice({
    name: 'weva',
    initialState,
    reducers: {
         // whatever
    }
})

这不是吗?

import myData from './data.json';

const wevaSlice = createSlice({
    name: 'weva',
    myData,
    reducers: {
         // whatever
    }
})

如果我尝试第二个选项,我会收到以下错误:

未捕获错误:键“weva”的切片缩减器 return在初始化期间未定义。如果传递给 reducer 的状态未定义,则必须显式 return 初始状态。初始状态可能不是未定义的。如果不想给这个reducer设置值,可以用null代替undefined。

知道这是为什么吗?这与 Immer lib 有什么关系吗?如果是,谁能解释为什么第二个选项不起作用?

因为这些不是位置参数。 initialState

有一个shorthand
const wevaSlice = createSlice({
    name: 'weva',
    initialState: initialState,
    reducers: {
         // whatever
    }
})

所以你的第二个片段类似于调用

const wevaSlice = createSlice({
    name: 'weva',
    myData: myData,
    reducers: {
         // whatever
    }
})

相反,您可以这样做

const wevaSlice = createSlice({
    name: 'weva',
    initialState: myData,
    reducers: {
         // whatever
    }
})