REACT Uncaught TypeError .then 不是函数 [英] REACT Uncaught TypeError .then is not a function

查看:44
本文介绍了REACT Uncaught TypeError .then 不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在我的 react 组件中执行这样的功能:

i'm doing function in my react component like this :

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>
  )
};

我已经将 dispatch 包装在组件中并连接它.

i already wrap the dispatch in the component and connect it.

const mapDispatchToProps = (dispatch) => {
    return {
        logout: () => (
            dispatch(logoutUser)
        )
    }
}

这是我的操作:

export function logoutUser(){
    return (dispatch) => {
        return new Promise((resolve) => { 
            dispatch({
                type    : LOGOUT_USER,
            });
            resolve();
        })
    }
};

这是我的减速器:

case LOGOUT_USER :  
            return Object.assign({}, state, {autenticated : false});

我总是遇到这个错误

未捕获的类型错误:props.logout(...).then 不是函数在 Object.doLogout [作为 onTouchTap](在

Uncaught TypeError: props.logout(...).then is not a function at Object.doLogout [as onTouchTap] (eval at

推荐答案

我想你的意思

function mapDispatchToProps(dispatch) {
    return {
        logout: logoutUser(dispatch)
    };
}

export function logoutUser(dispatch) {
    return () => {
        return new Promise((resolve) => { 
            dispatch({
                type: LOGOUT_USER,
            });
            resolve();
        });
    };
}

虽然看起来没有任何异步发生,所以没有理由等待任何事情.

Although it doesn't look like there's anything asynchronous happening, so no reason to wait for anything.

这篇关于REACT Uncaught TypeError .then 不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆