Javascript 如何在redux中使用asyn操作
我想知道我的操作何时完成了请求,这样我就可以处理数据了(有点像承诺) 我正在使用thunk分派函数 这是我的行动Javascript 如何在redux中使用asyn操作,javascript,react-redux,Javascript,React Redux,我想知道我的操作何时完成了请求,这样我就可以处理数据了(有点像承诺) 我正在使用thunk分派函数 这是我的行动 export function addUser(nom,url) { return (dispatch) =>{ axios.post('/', { nom: nom, url: url }) .then(function (response) {
export function addUser(nom,url) {
return (dispatch) =>{
axios.post('/', {
nom: nom,
url: url
})
.then(function (response) {
dispatch(()=>{//somthing for the reducer})
console.log(response);
})
}
在我的组件中,我想执行类似的操作
addUser('test','test')
.then() // do something after the addUser is executed
我们在redux中这样做的方式是在成功时发送一个操作,如下所示:
const addUserSuccess = () => {
return {
type: 'ADD_USER_SUCCESS',
}
}
export function addUser(nom,url) {
return (dispatch) =>{
axios.post('/', {
nom: nom,
url: url
})
.then(function (response) {
dispatch(addUserSuccess());
console.log(response);
})
}
const initialState = { addedUser: false };
export default (state = initialState, action) => {
switch (action.type) {
case 'ADD_USER_SUCCESS:
return {
...state,
addedUser: true
};
default:
return state;
}
}
现在在你的减速机里变成这样:
const addUserSuccess = () => {
return {
type: 'ADD_USER_SUCCESS',
}
}
export function addUser(nom,url) {
return (dispatch) =>{
axios.post('/', {
nom: nom,
url: url
})
.then(function (response) {
dispatch(addUserSuccess());
console.log(response);
})
}
const initialState = { addedUser: false };
export default (state = initialState, action) => {
switch (action.type) {
case 'ADD_USER_SUCCESS:
return {
...state,
addedUser: true
};
default:
return state;
}
}
最后但并非最不重要的一点是,将组件连接到存储
class ExampleComponent extends React.Component {
componentDidMount() {
addUser();
}
render() {
if (props.addedUser) {
// do something after the addUser is executed
}
return <div>Example</div>;
}
}
const mapStateToProps = (state) => ({
addedUser: state.user.addedUser
});
// connect is a react-redux HOC
const ConnectedComponent = connect(mapStateToProps)(ExampleComponent);
然后您可以在组件中使用它
addUser()().then();
只需确保调用它两次,因为addUser()是一个返回承诺的函数。您始终可以创建一个承诺并从
addUser
返回它,然后在http请求完成时解析它。你试过什么了吗?我实际上试着回报一个新的承诺,但是因为我不太擅长承诺。。。我不知道如何解决它promise.resolve()
?:DI收到此错误React Redux:操作必须是普通对象。将自定义中间件用于异步操作sthunk调度是异步的,这里有什么不起作用?这有帮助吗?还是需要更好的解释/示例?