我在mapStateToProps函数中接收我的redux状态,但状态不映射到props,因此在我的组件中不可用。
我在mapStateToProps函数中运行了一个console.log并收回了数据。没有为状态对象/数组分配props(console.log有一个数组返回)。
救命!
componentDidMount() {
this.props.onLoadHabits();
console.log(this.props.habits)
// undefined
}
const mapStateToProps = state => {
console.log(state.habits.habits)
// returns an array with my two test objects included... [ Object, Object]
return {
habits: state.habits.habits
}
}
const mapDispatchToProps = dispatch => {
return {
onLoadHabits: () => dispatch(getHabits())
}
}
export default connect(mapStateToProps, mapDispatchToProps)(RoutineScreen);
export const getHabits = () => {
return dispatch => {
fetch("https://bestlyfe-b368a.firebaseio.com/habits.json")
.catch(err => {
console.log(err);
alert('Something went wrong, sorry :(');
})
.then(res => res.json())
.then(parsedRes => {
const habits = [];
for (let key in parsedRes) {
habits.push({
...parsedRes[key],
key: key
})
}
console.log(habits);
dispatch(setHabits(habits));
})
}
}
export const setHabits = habits => {
return {
type: SET_HABITS,
habits: habits
}
}
const habitsReducer = (state = initialState, action) => {
switch (action.type) {
case SET_HABITS:
return {
...state,
habits: action.habits
}
default:
return state;
}
};
export default habitsReducer;