Я использую функцию подключения из "response-redux" для отображения состояния и действий в качестве реквизита в моем компоненте.Используются комбинированные редукторы, как показано ниже:
import { combineReducers } from "redux";
import userDetails from "./userDetails";
export default combineReducers({
userDetails
});
При включении отладчика в функцию mapStateToProps объект состояния не находится на верхнем уровне, а переносится под ключом: userDetails, который является именемодного из редукторов:
import { FETCH_USER_DETAILS } from "../actions/type";
const reducer = (state = null, action) => {
switch (action.type) {
case FETCH_USER_DETAILS:
return {
...{
...action.payload,
isLoading: false
}
};
default:
return state;
}
};
export default reducer;
Теперь, так как объект состояния недоступен на верхнем уровне, я должен добавить больше логики в mapStateToProps, как показано ниже:
const mapStateToProps = state => {
if (state.userDetails)
return {
title: state.userDetails.title,
author: state.userDetails.author,
rating: state.userDetails.rating,
reviews: state.userDetails.reviews,
isLoading: state.userDetails.isLoading
};
else return {};
};
Есть ли способэто состояние, возвращаемое редуктором в хранилище, не переносится ни в один объект {ключ объекта, такой же, как имя редуктора}, так что я могу упростить функцию mapStateToProps, как показано ниже:
const mapStateToProps = ({ title, author, reviews, rating, isLoading }) => ({
title,
author,
reviews,
rating,
isLoading
});