gpt4 book ai didi

reactjs - Action 中返回和调度的区别 : Redux

转载 作者:行者123 更新时间:2023-12-03 21:00:10 24 4
gpt4 key购买 nike

我注意到有时 Redux 中的操作使用 return及其他 dispatch .我也注意到 dispatch在该操作函数中有一些异步操作时使用,例如从/向数据库读取/发布,但我不明白为什么。谁能解释一下关键的区别。我们为什么不使用 dispatch例如,在 React 中的上下文 API 中?

编辑:我将添加一个不涉及后端的示例,因此没有 async await循环:

 //with return
export const addLog = (log) => {
return{
type: ADD_LOG,
payload: log
}
}
//with dispatch
export const addLog = (log) => disptach => {
dispatch{
type: ADD_LOG,
payload: log
}
}

两者有什么区别?

最佳答案

我很惊讶没有人想出一个明确的答案。这来得很晚,但我会以 redux-thunk 为例,为有同样问题的人发布此信息。
根据 docs :

你只需要知道一件重要的事情:通过使用这个特定的中间件, Action 创建者可以返回一个函数而不是一个 Action 对象。这样, Action 创建者就变成了笨蛋

返回的函数接收调度方法作为参数,您应该使用它来触发状态更新,因为函数本身不能调度 Action 如果您返回一个对象,则事件。例如:

const getEvents = () => {
return async (dispatch) => {
const res = await fetch(
'https://someendpoint/events'
);
const events = await res.json();

return { // <-- this will NOT be sent to any reducer
type: GET_EVENTS,
events: [],
};

dispatch({ // <-- this will
type: GET_EVENTS,
events,
});
};

};

section异步操作创建者更详细地解释了这一点。

关于reactjs - Action 中返回和调度的区别 : Redux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58568648/

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