Я пытался получить новое состояние из моей функции-редуктора VitaminReducer () и подключить его через mapStateToProps. Но когда я console.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,
});
У меня есть данные, поступающие через экспресс-сервер. Я занес здесь в консоль «витамины» и получаю данные обратно, так что я знаю, что проблема не в этом.
(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
});
Если я сделаю: «return {Vitamin: state.vitamin,}» вместо «return {Vitamin: state,}», я вернусь «TypeError: Cannot read property 'Vitamin' of undefined». Но это то, что я назвал VitaminReducer в моей функции combReducers () в конце файла redurs.js, так что я подумал, что это правильный способ сделать это.
mapStateToProps()
, но он ожидает состояние в качестве аргумента ... Это функция сопоставления, вы должны просто передать ееconnect
, а не вызывать ее самостоятельно. - person Tomasz Mularczyk   schedule 28.05.2018connect
, а не вызываете его самостоятельно? - person John White   schedule 28.05.2018connect
, таким образомredux-thunk
устанавливает свойства компонента в соответствии сstore
. Итак, какова ваша цель здесь? - person Barazu   schedule 28.05.2018renderData()
для сопоставления каждого витамина и возврата их имен вselect
раскрывающемся списке - person John White   schedule 29.05.2018