Я новичок в 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
]
}
})