uki*_*ura 6 promise reactjs react-router redux
我在我的反应组件中做这样的功能:
const Logged = (props) => {
const doLogout = () => {
props.logout().then(() => browserHistory.push('/'));
}
return(
<IconMenu
{...Props}
iconButtonElement={
<IconButton><MoreVertIcon /></IconButton>
}
targetOrigin={{horizontal: 'right', vertical: 'top'}}
anchorOrigin={{horizontal: 'right', vertical: 'top'}}
>
<MenuItem primaryText="Sign out"
onTouchTap={doLogout}
/>
</IconMenu>
)
};
Run Code Online (Sandbox Code Playgroud)
我已经在组件中包装了调度并连接它。
const mapDispatchToProps = (dispatch) => {
return {
logout: () => (
dispatch(logoutUser)
)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的行动:
export function logoutUser(){
return (dispatch) => {
return new Promise((resolve) => {
dispatch({
type : LOGOUT_USER,
});
resolve();
})
}
};
Run Code Online (Sandbox Code Playgroud)
这是我的减速器:
case LOGOUT_USER :
return Object.assign({}, state, {autenticated : false});
Run Code Online (Sandbox Code Playgroud)
我总是收到这个错误
Uncaught TypeError: props.logout(...).then 不是 Object.doLogout [as onTouchTap] 的函数(eval at
我想你的意思是
function mapDispatchToProps(dispatch) {
return {
logout: logoutUser(dispatch)
};
}
Run Code Online (Sandbox Code Playgroud)
export function logoutUser(dispatch) {
return () => {
return new Promise((resolve) => {
dispatch({
type: LOGOUT_USER,
});
resolve();
});
};
}
Run Code Online (Sandbox Code Playgroud)
尽管看起来没有发生任何异步事情,所以没有理由等待任何事情。
| 归档时间: |
|
| 查看次数: |
15675 次 |
| 最近记录: |