Когда приложение запущено, пользователь может выбрать некоторые настройки, и на основании этих настроек bottomTabNavigator моего приложения должен изменить доступные значки и экраны. Сначала я инициализирую все экраны и все значки в bottomTabNavigator, но когда пользователь отключает некоторые параметры, нижний навигатор должен настроить.
Я попытался сделать это с помощью useContext - потому что мои настройки доступны глобально через ловушка контекста, но я сталкиваюсь с проблемой, когда мой контейнер приложения не перерисовывается после его первоначального запуска, поэтому контекст, используемый через useContext, больше не вызывается с его обновленными изменениями.
const navigatorInit = (settings) => { ... navigator setup that changes based on settings ... }
//This works if I manually change the settings before the app starts.
//But this function isn't called again during runtime.
export default App = () => {
let tmpState = useContext(Context); //I need to do this
//and the segment below because it seems like Context is only created after this functional component
//has finished executing, which makes sense.
if (tmpState !== undefined && tmpState !== null){
console.log('tmpState is usable')
const {state} = tmpState;
tmpState = state;
}
const nav = navigatorInit(tmpState.settings)
const AppContainer = createAppContainer(nav);
return (
<React.Fragment>
<Provider>
<AppContainer
ref={(navigator) => {setNavigator(navigator)}}
/>
</Provider>
<React.Fragment>
);
};
Я делаю пользовательский компонент bottomTabNavigator и могу получить доступ к Context из этого компонента, чтобы изменить макет значков, но я не могу изменить маршруты, которые были установлены при первоначальном создании приложения в createAppContainer. Конечным результатом этого (после того, как пользователь изменил свои настройки) является то, что правильные значки отображаются внизу, но навигация неверна. Пожалуйста, помогите.