WedX - журнал о программировании и компьютерных науках

REACT Uncaught TypeError .then не является функцией

Я выполняю функцию в своем реагирующем компоненте следующим образом:

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

я уже заворачиваю рассылку в компонент и подключаю.

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

я всегда получал эту ошибку

Uncaught TypeError: props.logout(...).then не является функцией в Object.doLogout [как onTouchTap] (eval в


  • Что dispatch возвращает в dispatch(logoutUser)? 07.02.2017
  • @ Берги Обещание? 07.02.2017
  • Ну, не похоже, нет. Есть ли документация по dispatch? 07.02.2017

Ответы:


1

Я думаю, ты имел в виду

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.

07.02.2017
  • большое спасибо. это работает. но я все еще не понимаю, не могли бы вы немного объяснить мне, почему это не работает раньше. в моем коде vs я вижу, что мое действие logoutUser вернет обещание. и я делаю асинхронный, потому что нужно изменить аутентификацию на false, а затем перенаправить ее на /, есть ли лучший способ? @Bergi 07.02.2017
  • В вашем коде logoutUser возвращает не обещание, а функцию; и он даже не вызывается, а только передается dispatch (результат которого возвращается и не является обещанием). 07.02.2017
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]