使用 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
}
})
为什么这样做:
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
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
}
})