【发布时间】:2017-02-04 04:12:37
【问题描述】:
我正在尝试使用地图功能显示一些数据,但我不断收到警告和错误。 他们是
警告:React 性能测量代码中存在内部错误。没想到 componentDidMount 计时器在另一个实例的渲染计时器仍在进行中时启动。
另一个是
未捕获的类型错误:无法读取未定义的属性“地图”
我发现 this.props.courses.map 返回 null 但我仍然不知道为什么?
import React,{PropTypes} from 'react';
import {connect} from 'react-redux';
import * as courseActions from '../actions/courseActions';
class CoursesPage extends React.Component{
constructor(props,context){
super(props,context);
this.state={
course:[{id:1,title:'hello'}]
};
this.onTitleChange = this.onTitleChange.bind(this);
this.onClickSave = this.onClickSave.bind(this);
}
onTitleChange(event){
const course = this.state.course;
course.title = event.target.value;
this.setState({course:course});
}
onClickSave(){
this.props.dispatch(courseActions.createCourse(this.state.course));
}
courseRow(){
return this.props.courses.map((course)=>{
return(
<div key={course.id}>{course.title}</div>
);
});
}
render(){
return(
<div>
<h2>hello</h2>
<h3>{this.courseRow()}</h3>
<input type="text" onChange={this.onTitleChange} value={this.state.course.title}/>
<input type="submit" value="save" onClick={this.onClickSave}/>
</div>
);
}
}
CoursesPage.propTypes ={
dispatch: PropTypes.func.isRequired,
courses: PropTypes.array.isRequired
};
function mapStateToProps(state,ownProps){
return{
courses:state.courses
};
}
export default connect(mapStateToProps)(CoursesPage);
这是我的减速器
export default function courseReducer(state = [],action){
switch(action.type){
case 'CREATE_USER':
state.push(action.user);
return [...state,Object.assign({},action.user)];
default:
return state;
}
}
我的rootReducer
import {combineReducers} from 'redux';
import users from './userReducer';
import courses from './courseReducer';
const rootReducer = combineReducers({
users:users,
courses:courses
});
export default rootReducer;
商店
import {createStore,applyMiddleware} from 'redux';
import rootReducer from '../reducers/rootReducer';
export default function configureStore(initialState){
return createStore(
rootReducer,
initialState
);
}
【问题讨论】:
-
你打错了 this.state.course 已定义但 "courses" 没有。
-
@JustinHerter 抱歉应该是 this.props.courses.map 但仍然出现同样的错误
-
??? props.courses 不是数组,否则将定义 .map。 console.log("props: ",props) 在你的构造函数中看看有什么。
-
你能分享你的 store/reducers 吗?正在读取存储的课程为空或未定义,因此您会收到此错误。发布相关代码真的会有所帮助
-
顺便说一句,您不应该在
case CREATE_USER中使用state.push(action.user)。如果这样做,您将添加用户两次。
标签: javascript reactjs ecmascript-6 redux react-redux