【问题标题】:createSlice - extraReducers access to slice itselfcreateSlice - extraReducers 访问切片本身
【发布时间】:2021-08-12 20:09:07
【问题描述】:

我注意到,在 CreateSlice -> extraReducers 中,当您使用 builder 来 addCase 时,您可以在 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??
        });
    }
});

控制台输出:

1: slice undefined
2: slice {name: "sliceName", actions: {…}, caseReducers: {…}, reducer: ƒ}

这怎么可能?如何通过名称访问 slice,但只能从传递给 addCase 的 reducer 中访问?

提前致谢。

【问题讨论】:

    标签: reactjs react-redux redux-toolkit


    【解决方案1】:

    虽然extraReducers builder 函数在创建切片时执行(此时切片还不存在),但 case reducer 本身在切片已经被执行时执行创建了很长时间。这样他们就可以访问切片了。

    【讨论】:

    • 听起来差不多。你能再解释一下吗?或者也许指向我相关的资源?
    • 这与RTK本身无关,更多的是JavaScript执行的事情。变量(= 的左侧)没有值,而值(右侧)仍在计算中。方法调用通常意味着这种“计算”,如果那里有一个称为“计算期间”的回调,那当然也不能访问该变量。但是在创建之后调用的回调可以访问该值。我真的无法解释更多,但你可以尝试阅读范围和闭包。
    猜你喜欢
    • 2020-10-12
    • 2021-04-06
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2023-02-16
    • 2020-12-18
    • 2015-09-12
    • 2021-08-17
    相关资源
    最近更新 更多