createSlice - extraReducers 访问切片本身
createSlice - extraReducers access to slice itself
我注意到,在 CreateSlice -> extraReducers 中,当您使用构建器添加 Case 时,您可以在 addCase 方法中访问切片本身,但在其他任何地方都无法访问!
const slice = createSlice({
name: 'sliceName',
initialState,
reducers: {...},
extraReducers: builder => {
console.log( '1: slice', slice ); // undefined
builder.addCase( someAsyncThunk.pending, ( state, action ) => {
console.log( '2: slice', slice ); // full access to slice const - HOW??
});
}
});
console.output:
1: slice undefined
2: slice {name: "sliceName", actions: {…}, caseReducers: {…}, reducer: ƒ}
这怎么可能?如何通过名称访问 slice 但只能从传递给 addCase 的 reducer 中访问?
提前致谢。
虽然 extraReducers
构建器函数在 创建切片时执行 (此时切片尚不存在),但 case reducer 本身是当切片已经创建了很长时间时执行。这样他们就可以访问切片了。
我注意到,在 CreateSlice -> extraReducers 中,当您使用构建器添加 Case 时,您可以在 addCase 方法中访问切片本身,但在其他任何地方都无法访问!
const slice = createSlice({
name: 'sliceName',
initialState,
reducers: {...},
extraReducers: builder => {
console.log( '1: slice', slice ); // undefined
builder.addCase( someAsyncThunk.pending, ( state, action ) => {
console.log( '2: slice', slice ); // full access to slice const - HOW??
});
}
});
console.output:
1: slice undefined
2: slice {name: "sliceName", actions: {…}, caseReducers: {…}, reducer: ƒ}
这怎么可能?如何通过名称访问 slice 但只能从传递给 addCase 的 reducer 中访问?
提前致谢。
虽然 extraReducers
构建器函数在 创建切片时执行 (此时切片尚不存在),但 case reducer 本身是当切片已经创建了很长时间时执行。这样他们就可以访问切片了。