什么';使用Redux Thunk与普通异步代码的区别是什么?[包括例子]
我一直努力想弄清楚Redux thunk,因为它真的不明白它有什么伟大的用途。例如,我在一个网站上找到了一个随机的Redux Thunk示例:什么';使用Redux Thunk与普通异步代码的区别是什么?[包括例子],redux,react-redux,redux-thunk,Redux,React Redux,Redux Thunk,我一直努力想弄清楚Redux thunk,因为它真的不明白它有什么伟大的用途。例如,我在一个网站上找到了一个随机的Redux Thunk示例: export const addTodo = ({ title, userId }) => { return dispatch => { dispatch(addTodoStarted()); axios .post(ENDPOINT, { title, userId,
export const addTodo = ({ title, userId }) => {
return dispatch => {
dispatch(addTodoStarted());
axios
.post(ENDPOINT, {
title,
userId,
completed: false
})
.then(res => {
setTimeout(() => {
dispatch(addTodoSuccess(res.data));
}, 2500);
})
.catch(err => {
dispatch(addTodoFailure(err.message));
});
};
};
看起来很简单,addTodo是一个函数,它接受标题和用户ID,并返回一个以dispatch作为参数的函数,然后使用dispatch一次又一次地响应HTTP请求。因为在本例中使用了Redux Thunk,所以只需执行dispatch(addTodo(x,x))代码>
为什么我不做这样的事呢
function addTodo(dispatch, title,userId){
dispatch(addTodoStarted());
axios
.post(ENDPOINT, {
title,
userId,
completed: false
})
.then(res => {
setTimeout(() => {
dispatch(addTodoSuccess(res.data));
}, 2500);
})
.catch(err => {
dispatch(addTodoFailure(err.message));
});
}
然后从任何地方,我都可以调用addTodo(dispatch,x,x)代码>
为什么我要使用Redux Thunk而不是我自己的例子?这里有几点我将试图解释为什么应该使用Redux Thunk
它的中间件使分派和状态对象在您定义的每个操作中都可用,而无需接触组件代码
当您传递来自props或mapDispatchToProps(react redux)的调度函数时,该函数将创建闭包。这个闭包会一直占用内存,直到asyc操作完成
当您想要分派任何操作时,在完成或异步操作后,您需要传递分派函数,在这种情况下,您需要修改组件和操作等两个文件
如果某些东西已经可用并经过大量努力和社区支持测试,为什么不使用它呢
您的代码将更具可读性和模块化
这两种方法最糟糕的情况是,在完成项目后,需要更改thunk方法,您可以轻松地用自定义中间件代码模拟thunk中间件并解决它,但在传递分派函数的情况下,它将重构所有代码并搜索和替换,并找到管理它的方法
这里有几点我将试图解释为什么应该使用redux thunk
它的中间件使分派和状态对象在您定义的每个操作中都可用,而无需接触组件代码
当您传递来自props或mapDispatchToProps(react redux)的调度函数时,该函数将创建闭包。这个闭包会一直占用内存,直到asyc操作完成
当您想要分派任何操作时,在完成或异步操作后,您需要传递分派函数,在这种情况下,您需要修改组件和操作等两个文件
如果某些东西已经可用并经过大量努力和社区支持测试,为什么不使用它呢
您的代码将更具可读性和模块化
这两种方法最糟糕的情况是,在完成项目后,需要更改thunk方法,您可以轻松地用自定义中间件代码模拟thunk中间件并解决它,但在传递分派函数的情况下,它将重构所有代码并搜索和替换,并找到管理它的方法
已经回答,请按照链接。已经回答,请按照链接。