Получаю начальное состояние из API в компонент-контейнере (smart component):
function App(props){
useEffect(() => {
if(!props.isLoaded){
props.getInitialState();
}
});
return <MyBlock data={props.data} />;
}
const mapStateToProps = store => {
return { ...store};
};
const mapDispatchToProps = dispatch => {
return {
getInitialState: () => dispatch(getInitialState())
};
};
export default connect(mapStateToProps, mapDispatchToProps)(App);
getInitialState - action creator:
function getInitialState() {
return dispatch => {
dispatch({
type: 'GET_INITIAL_DATA'
});
fetch('url')
.then(res => res.json())
.then(data => {
dispatch => {
type: 'GET_INITIAL_DATA_SUCCESS',
payload: data
}
});
};
}
+- в рабочем проекте так, здесь накидал для наглядности
Правильный ли это подход?
Какие есть еще варианты?
Видел как люди пытаются делать запросы прямо в initialState в Редюсере, но мне кажется это не совсем верный и рабочий подход.