При выполнении следующих действий:
- Данные запроса
- Используйте данные, чтобы определить, какой экран направить на
- Путь к экрану
- Render null
Я получаю следующую ошибку:
Warning: Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.
- node_modules/expo/build/logs/LogSerialization.js:146:14 in _captureConsoleStackTrace
- node_modules/expo/build/logs/LogSerialization.js:41:24 in serializeLogDataAsync$
- ... 9 more stack frames from framework internals
Если бы я мог загрузить данные таким способом, это решило бы мою проблему:
loadApp = async () => {
await Auth.currentUserInfo()
.then(user => {
this.props.navigation.navigate(user ? 'App' : 'Auth');
});
}
Однако я не уверен, что могу сделать вызов apollo / graphql за пределами шаблона.
Вот мой код:
export default class ProfileLoadingScreen extends Component<Props> {
render() {
return (
<UserDataQuery query={USER_DATA_QUERY} >
{({ data, loading }) => {
if (loading) {
return <Loader text="Loading your profile..." />;
}
if (!data) {
return <Text>There was an error loading your Profile data.</Text>;
}
if (data && data.getUserData && !data.getUserData.profileId) {
this.props.navigation.navigate('Tos');
return (null);
}
if (data && data.getUserData && data.getUserData.profileId) {
this.props.navigation.navigate('MyProfile');
return (null);
}
}}
</UserDataQuery>
);
}
}