Я пытался получить новое состояние из функции моего редуктора vitaminReducer () и подключить его через mapStateToProps.Но когда я утешаю состояние .log, я возвращаюсь: «состояние {витамин: undefined}».
Это компонент Vitamins, где я вызываю mapStateToProps () (Vitamins.js)
componentDidMount() {
this.props.fetchVitamins();
}
function mapStateToProps(state) {
return {
vitamin: state,
}
};
console.log('the state is', mapStateToProps());
export default connect(mapStateToProps, { fetchVitamins })(Vitamins);
(redurs.js)
function vitaminReducer(state = [], action) {
switch(action.type) {
case FETCH_VITAMINS_SUCCESS:
return [
...state,
action.payload.vitamins
];
default:
return state;
}
}
const reducers = combineReducers({
vitamin: vitaminReducer,
});
У меня есть данные, поступающие через сервер Express.Я записал в консоли «витамины» и получил данные обратно, так что я знаю, что это не проблема.
(actions.js)
export function fetchVitamins() {
return dispatch => {
return fetch("/users")
.then(handleErrors)
.then(res => res.json())
.then(micros => {
dispatch(fetchVitaminsSuccess(micros));
const vitamins = micros.vitamins;
}
)};
};
export const FETCH_VITAMINS_SUCCESS = 'FETCH_VITAMINS_SUCCESS';
export const fetchVitaminsSuccess = vitamins => ({
type: FETCH_VITAMINS_SUCCESS,
payload: vitamins
});
Если я это сделаю:{vitamin: state.vitamin,} "вместо« return {vitamin: state,} »я получаю сообщение« Ошибка типа: невозможно прочитать свойство 'vitamin' undefined ".Но это то, что я назвал vitaminReducer в моей функцииcellReducers () в нижней части файла redurs.js, поэтому я подумал, что это правильный путь.