成功或错误后如何使用redux thunk进行重定向?
How to use redux thunk to redirect after success or error?
我是 Promises 和 React 的新手。我在我的动作创建者中使用 redux-thunk 来解决承诺,我正在从我的组件中调用动作创建者。在成功或不成功的请求完成后如何路由到不同的 URL?我附上了删除函数动作创建者的代码。
是否应该在发送成功时使用参数 (routeTo) 设置状态?
删除函数如下:
export function deletePost(id){
var request = axios.delete(`${ROOT_URL}posts/${id}${API_KEY}`);
return function(dispatch){
request.then((response)=>{
console.log("I deleted"+response.data.title);
}).catch((error)=>{
console.log("DELETE_ERROR: "+JSON.stringify(error));
});
}
}
我从组件中的 onclick 函数调用此函数。
deletePost(){
this.props.deletePost(this.props.params.id);
}
我发现使用 redux 进行路由的最佳方法是考虑状态的 URI 部分,并将其存储在 redux 中。有一个优秀的库 react-router-redux 可以为您完成这项工作。
一旦你设置了 react-router-redux,你就可以发送动作来改变位置,所以你的 thunk 看起来像:
import { push } from 'react-router-redux';
export function deletePost(id){
var request = axios.delete(`${ROOT_URL}posts/${id}${API_KEY}`);
return function(dispatch){
request.then((response)=>{
console.log("I deleted"+response.data.title);
dispatch(push('/delete-success-uri'));
}).catch((error)=>{
console.log("DELETE_ERROR: "+JSON.stringify(error));
dispatch(push('/delete-fail-uri'));
});
}
}
我是 Promises 和 React 的新手。我在我的动作创建者中使用 redux-thunk 来解决承诺,我正在从我的组件中调用动作创建者。在成功或不成功的请求完成后如何路由到不同的 URL?我附上了删除函数动作创建者的代码。
是否应该在发送成功时使用参数 (routeTo) 设置状态?
删除函数如下:
export function deletePost(id){
var request = axios.delete(`${ROOT_URL}posts/${id}${API_KEY}`);
return function(dispatch){
request.then((response)=>{
console.log("I deleted"+response.data.title);
}).catch((error)=>{
console.log("DELETE_ERROR: "+JSON.stringify(error));
});
}
}
我从组件中的 onclick 函数调用此函数。
deletePost(){
this.props.deletePost(this.props.params.id);
}
我发现使用 redux 进行路由的最佳方法是考虑状态的 URI 部分,并将其存储在 redux 中。有一个优秀的库 react-router-redux 可以为您完成这项工作。
一旦你设置了 react-router-redux,你就可以发送动作来改变位置,所以你的 thunk 看起来像:
import { push } from 'react-router-redux';
export function deletePost(id){
var request = axios.delete(`${ROOT_URL}posts/${id}${API_KEY}`);
return function(dispatch){
request.then((response)=>{
console.log("I deleted"+response.data.title);
dispatch(push('/delete-success-uri'));
}).catch((error)=>{
console.log("DELETE_ERROR: "+JSON.stringify(error));
dispatch(push('/delete-fail-uri'));
});
}
}