我正在开发React / Redux应用程序,我在调度动作后从redux store获取一个特定状态时遇到问题。我不知道为什么会发生这种情况,因为我没有遇到其他州的问题。这是我的代码:
减速
import {SET_CURRENT_USER, SET_LECTURES} from '../actions/actionTypes';
import isEmpty from 'lodash/isEmpty';
const initialState = {
isAuthenticated: false,
user: {},
lectures: []
}
export default (state = initialState, action = {}) => {
switch(action.type) {
case SET_CURRENT_USER:
return {
isAuthenticated: !isEmpty(action.user),
user: action.user
};
case SET_LECTURES:
return {
lectures: action.lectures
}
default: return state;
}
}
行动创建者和调度行动
import { SET_LECTURES } from './actionTypes';
export const setLectures = (lectures) => {
return {
type: SET_LECTURES,
lectures
}
}
export const lecture = (lectures) => {
return dispatch => {
console.log(lectures);
dispatch(setLectures(lectures));
}
}
问题在于SET_LECTURES
操作类型,特别是操作对象的lectures
属性。在我想要获得状态lectures
的组件中,我执行mapStateToProps
,如下所示:
const mapStateToProps = function(state) {
return {
notifications: state.notifications,
lectures: state.lectures
}
}
/*
*Code of the class
*/
export default connect(mapStateToProps, null)(AddQuestionForm);
我跳过了触发调度操作类型SET_LECTURES
的代码,因为它运行正常。我还使用React Developer Tools来跟踪状态,并且存在lectures
状态。我无法从我的组件中获取此状态,当我从console.log(this.props.lectures)
执行ComponentDidMount()
时,它会显示 undefined 。你能解释一下我在这里做错了什么吗?我将不胜感激任何帮助。
答案 0 :(得分:0)
您忘记了dispatch
:
export const lectureAction = lectures => dispatch => {
return dispatch => {
dispatch(setLectures(lectures));
}
}
在组件中:
import { bindActionCreators } from 'redux';
const mapStateToProps = function(state) {
return {
notifications: state.notifications
}
}
// use map dispatch for actions:
const mapDispatchToProps = dispatch =>
bindActionCreators({
lectures: lectureAction
}, dispatch);
/*
*Code of the class
*/
// connect map dispatch here:
export default connect(mapStateToProps, mapDispatchToProps)(AddQuestionForm);
现在,您可以访问Component中的this.props.lectures(someParams)
函数,该函数可以分派操作。