У меня есть компонент контейнера в реагирующем шаблонном коде JS, который получает данные (скажем, список школ), используя sagas, в редуктор и устанавливает состояние, которое будет считываться функцией выбора на моей странице рендеринга для отображения пользователю.
Образцы данных saga.js, возвращаемые с сервера
data: [ {
id: '1',
name: 'School1',
location: 'Location1',
},
{
id: '2',
name: 'School2',
location: 'Location2',
},
]
код actions.js
export function requestSchools() {
return {
type: REQUEST_SCHOOLS,
};
}
export function requestSchoolsSucceeded(schoolsData) {
return {
type: REQUEST_SCHOOLS_SUCCEEDED,
schoolsData,
};
}
*Фрагмент 1013 * reducer.js
function schoolsContainerReducer(state = initialState, action)
{
switch (action.type) {
case REQUEST_SCHOOLS_SUCCEEDED:
return state.set('schools', action.schoolsData);
default:
return state;
}
}
фрагмент selector.js
const makeSelectSchools = () =>
createSelector(selectSchoolsContainerDomain, schoolState =>
schoolState.get('schools'),
);
Фрагмент index.js
//This will trigger action REQUEST_SCHOOLS in action.js
constructor(props) {
super(props);
this.props.requestSchools();
}
render() {
const { schools } = this.props;
const renderSch = schools.data.map(sch => (
<div key={sch.id}>
{sch.name} {sch.location}
</div>
));
return (
<div>
{renderSch}
</div>
);
}
const mapStateToProps = createStructuredSelector({
schoolsContainer: makeSelectSchoolsContainer(),
schools: makeSelectSchools(),
});
function mapDispatchToProps(dispatch) {
return {
//dispatch request schools action
requestSchools: () => dispatch(requestSchools()),
};
}
При первом создании веб-пакета я могу получить данные и правильно отобразить их.Однако, когда я обновляю ту же страницу, данные поступают до редуктора (где установлено состояние), но не до селектора (где я получаю состояние).Как я могу получить данные из редуктора в селектор после обновления страницы?