Вероятно, лучшая практика для обновления состояния уровня компонента или запуска функции обратного вызова на основе изменения состояния притока (или любых изменений реквизита / состояния в этом отношении) состоит в использовании componentDidUpdate или useEffect:
componentDidUpdate(prevProps, prevState){
if(prevProps.someReduxState !== this.props.someReduxState && this.state.isLoading){
setState({isLoading:false})
}
}
СuseEffect:
useEffect(()=>{
if(!props.someReduxState){
setLoading(true)
} else {
setLoading(false)
}
},[props.someReduxState])
Однако я мог бы порекомендовать другой подход (в зависимости от цели, особенно при первоначальной выборке данных), который управляет загрузкой состояния в избыточном:
Инициализируйте свое избыточное состояние с помощьювместо этого значение загрузки:
export default someReduxState = (state = {notLoaded:true}, action) => {
switch (action.type) {
case actions.FETCH_SOME_REDUX_STATE:
return action.payload;
default:
return state;
}
}
, тогда в вашем компоненте вы можете проверить:
if (this.props.someReduxState.notLoaded ){
// do something or return loading components
} else {
// do something else or return loaded components
}