Я не могу получить обновленное состояние после перехода в другое состояние. Я хочу использовать свой dataState, который инициализируется в редукторе и обновляется через действие. Я использовал это состояние после отправки на Экран 1, но при переходе на другой экран его возвращение не определено.
store. js
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import reducers from './reducers.js';
export default createStore(reducers, applyMiddleware(thunk));
action. js
export const DATA_AVAILABLE = 'DATA_AVAILABLE';
export const addData = (data) => ({
type: DATA_AVAILABLE,
data
});
редукторы. js
import { combineReducers } from 'redux';
import { DATA_AVAILABLE } from "./actions"
let dataState = { data: [] };
const dataReducer = (state = dataState, action) => {
switch (action.type) {
case DATA_AVAILABLE:
return {...state, data: action.data};
default:
return state;
}
};
const rootReducer = combineReducers({
dataReducer
})
export default rootReducer;
HomeScreen. js Использование
const dataReducer = useSelector(state => state.dataReducer);
const { data } = dataReducer;
useEffect(() => getData(), []);
const getData = () => {
setIsFetching(true);
let url =
"https://my-json-server.typicode.com/mesandigital/demo/instructions";
axios
.get(url)
.then(res => res.data)
.then(data => dispatch(addData(data)))
.catch(error => alert(error.message))
.finally(() => setIsFetching(false));
};
Доступ к выбранным данным можно получить с константой данных. Таким образом, это означает, что состояние dataState обновляется после выборки. Но когда я перехожу на другой экран и пытаюсь получить доступ к dataState, он возвращает undefined. Я получаю доступ к состоянию хранилища на этом экране:
const dataReducer = useSelector(state => state.dataReducer);
const { data } = dataReducer;
константа данных возвращает неопределенное значение. Я что-то упустил?