У меня есть приложение-носитель, и я использую новый API-интерфейс Context для управления хранилищем и другими вещами. Теперь я обертываю createAppContainer(AuthNavigator)
в <Provider>
, созданный API контекста, поэтому дляперейдя из файла Context API, я попытался сделать точно такой же пример, который нашел в документации, создав NavigationService
и передав ref
из AppContainer
в NavigationService
и используя { NavigationActions }
, так или иначе этоне работает и не выдает никаких ошибок
вот мой router.js
const AuthNavigator = createSwitchNavigator(
{
Authenticated: Authenticated,
UnAuthenticated: UnAuthenticated,
},
{
initialRouteName: props.is_authenticated ? 'Authenticated' : 'UnAuthenticated'
}
)
const Router = createAppContainer(AuthNavigator);
return (
<Provider style={{ width: '100%', height: '100%' }}>
<Router ref={ ref => NavigationService.setTopLevelNavigator(ref) } />
<DropdownAlert
successColor="#26296A"
titleStyle={{ fontFamily: 'DINNextLTArabic-Regular', lineHeight: 18, color: '#fff', textAlign: 'center' }}
messageStyle={{ fontFamily: 'DINNextLTArabic-Regular', lineHeight: 16, color: '#fff', textAlign: 'center' }}
imageStyle={{ display: 'none' }}
ref={ (ref) => Flash.setDropDown(ref) }
/>
</Provider>
)
}
export default ReactNavigator;
вот мой файл службы навигации
import { NavigationActions } from 'react-navigation';
let navigator;
function setTopLevelNavigator(nav_ref) { navigator = nav_ref }
function navigate(route_name, params) {
navigator.dispatch(
NavigationActions.navigate({
route_name,
params
})
)
}
export default {
navigate,
setTopLevelNavigator
};
и вотПровайдер, от которого я хочу перейти
это React Context API
import NavigationService from '@utils/navigation-service';
onReceived(notification) {
console.warn(notification.payload.additionalData);
console.warn('triggered');
NavigationService.navigate('Chat');
}