【发布时间】:2020-07-23 00:23:42
【问题描述】:
我正在向https://app.pluralsight.com/library/courses/react-redux-react-router-es6/table-of-contents 学习Redux,但我在某些时候卡住了。当我试图在CoursePage.js 中映射我的课程时,它显示this 错误,courses 的道具在CoursesPage 中被标记为必需,但它的值为undefined。
和:
未捕获的类型错误:无法读取未定义的属性“地图”。
这是代码
CoursePage.js
import React, { Component } from "react";
import { connect } from "react-redux";
import * as courseAction from "../../redux/actions/courseAction";
class CoursePage extends Component {
constructor(props) {
super(props);
console.log(this);
this.state = {
course: {
title: "",
},
};
}
handleChange = (event) => {
const course = { ...this.state.course, title: event.target.value };
this.setState({ course });
};
handleSubmit = (event) => {
event.preventDefault();
this.props.createCourse(this.state.course);
// alert(this.state.course.title);
};
render() {
return (
<main>
<div className="container">
<div className="jumbotron jumbotron-fluid">
<div className="container">
<h1 className="display-4">Course Page</h1>
<form className="mt-4" onSubmit={this.handleSubmit}>
<input
type="text"
onChange={this.handleChange}
value={this.state.course.title}
/>
<input type="submit" value="Add" />
{this.props.course.map((course) => (
<div key={course.title}>{course.title}</div>
))}
</form>
</div>
</div>
</div>
</main>
);
}
}
function mapStateToProps(state) {
return {
course: state.course,
};
}
function mapDispatchToProps(dispatch) {
return {
createCourse: (course) => dispatch(courseAction.createCourse(course)),
};
}
export default connect(mapStateToProps, mapDispatchToProps)(CoursePage);
courseReducer.js
import * as types from "../actions/actionTypes";
export default function courseReducer(state = [], action) {
switch (action.type) {
case types.CREATE_COURSE:
return [...state, { ...action.course }];
default:
return state;
}
}
【问题讨论】:
标签: javascript reactjs ecmascript-6 redux