【发布时间】:2019-02-19 01:02:32
【问题描述】:
我是 Redux 的新手,React 的半新手。我用它做了一些简单的应用程序。我了解 Redux 的基本概念(将状态存储在中心位置),这听起来比通过组件/道具传递东西更优雅。
但是,我收到以下错误:
错误:操作可能没有未定义的“类型”属性。你有没有拼错一个常数?
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
]
}
})
【问题讨论】: