Я хочу получить из данных состояния, которые я там установил.
код хранилища:
import React, { createContext, useContext, useReducer } from "react";
import { PatientEntry } from "../types";
import { Action } from "./reducer";
export type State = {
patients: { [id: string]: PatientEntry },
patient: undefined|PatientEntry
};
const initialState: State = {
patients: {},
patient:undefined
};
export const StateContext = createContext<[State, React.Dispatch<Action>]>([
initialState,
() => initialState
]);
type StateProviderProps = {
reducer: React.Reducer<State, Action>;
children: React.ReactElement;
};
export const StateProvider: React.FC<StateProviderProps> = ({
reducer,
children
}: StateProviderProps) => {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<StateContext.Provider value={[state, dispatch]}>
{children}
</StateContext.Provider>
);
};
export const useStateValue = () => useContext(StateContext);
код установки и получения.
const [state, dispatch] = useStateValue();
React.useEffect(() => {
const fetchPatient = async () => {
try {
{
const { data: patientFromApi } = await axios.get<PatientEntry>(`${apiBaseUrl}/patients/${id}`);
console.log("before dispatch")
console.log(state)
dispatch({ type: "SET_PATIENT", payload: patientFromApi });
console.log(Object.keys(patientFromApi))
}
} catch (e) {
console.error(e);
}
};
fetchPatient();
}, [dispatch]);
Состояние всегда является начальным состоянием, когда я перехожу на эту страницу, каждый раз, когда мне нужно сначала установить там данные, прежде чем я смогу их получить. Как просто получить?
Даже контекстный потребитель не помогает