Ошибка: у действий может не быть неопределенного свойства "type" - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в Redux, полу новичок в React.Я сделал несколько простых приложений с ним.Я понимаю базовую концепцию Redux (хранение состояния в центральном месте), которая звучит более элегантно, чем передача вещей через компоненты / реквизиты.

Однако я получаю следующую ошибку:

Ошибка: Действия могут не иметь неопределенного свойства "type".Вы ошиблись в написании константы?

onSubmit
src/containers/Login.js:28
  25 | 
  26 | const mapDispatchToProps = (dispatch) => ({
  27 |   onSubmit: (username, password) => {
> 28 |     dispatch(login(username, password))
  29 |   }
  30 | })
  31 | 

LoginForm._this.onSubmit
src/components/LoginForm.js:29
  26 | 
  27 | onSubmit = (event) => {
  28 |   event.preventDefault()
> 29 |   this.props.onSubmit(this.state.username, this.state.password)
  30 | }
  31 | 
  32 | render() {

Как вы можете видеть, существует проблема с линией отправки в Login.js.

Login.js выглядит следующим образом:

import React from 'react'
import { connect } from 'react-redux'
import { Redirect } from 'react-router'

import LoginForm from '../components/LoginForm'
import {login} from  '../actions/auth'
import {authErrors, isAuthenticated} from '../reducers'

const Login = (props) => {
  if(props.isAuthenticated) {
     return  <Redirect to='/' />
  }

  return (
     <div className="login-page">
       <LoginForm {...props}/>
    </div>
  )
}

const mapStateToProps = (state) => ({
  errors: authErrors(state),
  isAuthenticated: isAuthenticated(state)
})

const mapDispatchToProps = (dispatch) => ({
  onSubmit: (username, password) => {
    dispatch(login(username, password))
  }
})

export default connect(mapStateToProps, mapDispatchToProps)(Login);

Мое предположение, основанное на том, что я гуглял, состоит в том, что я на самом деле не пропускаю никаких типов данных, но, вероятно, где-то в моем промежуточном программном обеспечении есть проблема.

Что можетбудет продолжаться?Как бы я решил эту проблему или интерпретировал?

РЕДАКТИРОВАТЬ - вот моя функция входа в систему:

export const login = (username, password) => ({
  [RSAA]: {
    endpoint: '/api/auth/token/obtain/',
    method: 'POST',
    body: JSON.stringify({username, password}),
    headers: { 'Content-Type': 'application/json' },
    types: [
      LOGIN_REQUEST, LOGIN_SUCCESS, LOGIN_FAILURE
    ]
  }
})

1 Ответ

0 голосов
/ 19 февраля 2019

Существует определенный «шаблон», которому мы должны следовать, используя редукс.Основываясь на сообщении об ошибке, это просто означает, что dispatch действие ожидает объект с type свойством

dispatch({ type: 'ACTION_TYPE', .... });

, поэтому в зависимости от того, что login(username, password) return, redux dispatch будет ожидать объектс property типом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...