gpt4 book ai didi

reactjs - react Action 如何访问调度?

转载 作者:行者123 更新时间:2023-12-04 09:36:04 24 4
gpt4 key购买 nike

在我的 react 项目中,我有一个如下所示的操作文件:

const startLoad = () => async (dispatch) => {
dispatch({
type: CONTENT_LOAD,
});
};

// Get all content
export const getContents = () => async (dispatch) => {
dispatch(startLoad());
// some more code...
};
所以在这个例子中,我知道调度来自 middlewaregetContents可以访问它,因为它是使用 mapDispatchToProps 映射的.所以我假设何时 getContents被称为,它真的是这样叫的 -> dispatch(getContents)但是这可以用普通的 JavaScript 复制,这样我就可以看到真正发生了什么吗?如果我错了为什么 getContents可以访问 dispatch请让我知道。
例如, startLoad 怎么样?可以使用 dispatch只是因为 dispatchstartLoad ?我注意到如果我这样称呼它也可以工作: dispatch(startLoad(dispatch)); .
传递调度到 startLoad实际上对我来说更有意义,所以我不明白为什么不需要。
编辑:这是我自己能想到的最接近的例子。
const fun = () => (fun2) => {
fun2();
}

const fun2 = () => {
console.log('hello');
}

fun()(fun2);

最佳答案

So I am assuming when getContents is called, its really called likethis -> dispatch(getContents) but can this be replicated in plainJavaScript so I can see what is really going on? If I am wrong aboutwhy getContents has access to dispatch please let me know.


redux-thunk has quite simple implementation
function createThunkMiddleware(extraArgument) {
return ({ dispatch, getState }) => (next) => (action) => {
if (typeof action === 'function') {
return action(dispatch, getState, extraArgument);
}

return next(action);
};
}
正如你所看到的,它检查 action 是否是一个函数。
和奖励,如果你愿意,你可以在调度后获得整个状态和参数中的额外参数

For example, how isstartLoad able to use dispatch just becausedispatch called startLoad? I have noticed that it will also work if Icall it like this: dispatch(startLoad(dispatch));.


看起来中间件也处理上述情况。

关于reactjs - react Action 如何访问调度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62581566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com