Cześć,
mam taki problem, że zrobiłem sobie globalny provider w którym trzymam stan używany w kilku widokach.
Problem polega na tym, że po zapisaniu jakiejś wartości do stanu i nawigacji do innego screena, kiedy dostaje się do tego stanu to dalej mam w nim starą wartość. Tej nowej nie ma. Nie wiem czy coś robie źle, czy jak. Chciałem w jednym miejscu sobie coś pobierać z API, zapisać w tym globalnym stanie i później móc się do tego dostać z innego screena.
Chodzi mi o coś takiego
Tu jest mój provider
const AppContext = createContext<IAppContext>(initialAppContext);
const { Provider } = AppContext;
const AppProvider = ({ children }: any) => {
const [appState, setAppState] = useState(initialAppContext.appState)
return (
<Provider value={{ appState, setAppState }}>{children}</Provider >
)
};
export { AppContext, AppProvider }
Tutaj mam mój komponent root a w nim tego providera używam
return (
<AppProvider>
<AppContainer>
<RootStackScreen userToken={token} />
</AppContainer>
</AppProvider>
)
No i tutaj sobie coś w tym stanie ustawiam w jakimś screenie
export const MyScreen = ({ route, navigation }: NativeStackScreenProps<any>) => {
const appContext = useContext(AppContext);
appContext.setAppState({
...appContext.appState,
showIntro: aclimatizationStatus.data.showIntro
})
}
No i teraz jak gdzies w innym screenie chce to odczytać. Czyli muszę się tam nawigować to nie ma tej ustawionej wartości tylko jest stara..
export const InnyScreen = ({ route, navigation }: NativeStackScreenProps<any>) => {
const appContext = useContext(AppContext);
let showIntro = appContext.appState.showIntro; // <--- tutaj jest stara wartosc - nie pokazuje tej co ustawiłem :(
}