В вашем коде 2 проблемы. Во-первых, вы не используете никакое состояние, что означает, что React не будет заботиться о ваших изменениях и не будет перерисовывать компонент. Чтобы решить эту проблему, используйте хук useState
для хранения переменной.
Вторая, менее значительная проблема заключается в том, что вы вызываете функцию _getWelcomeComplete
непосредственно в теле компонента, поэтому она будет вызывать при каждом повторном отображении. , создавая бесконечное l oop. Чтобы решить эту проблему, поместите вызов в useEffect
, который выполняет его только при изменении чего-либо в массиве во втором аргументе (в этом случае массив пуст, поэтому он вызывается только при монтировании компонента)
Вот измененный код:
Приложение. js
export default function App() {
const [welcomed, setWelcomed] = useState('something');
useEffect(() => {
_getWelcomeComplete().then((response) => {
setWelcomed(response);
});
}, [])
return (
<NavigationContainer>
<WelcomeHeader />
<Stack.Navigator>
{welcomed === null ? (
<Stack.Screen
name="WelcomeStack"
component={WelcomeStack}
options={{headerShown: false}}
/>
) : (
<Stack.Screen
name="HomeStack"
component={HomeStack}
options={{headerShown: false}}
/>
)}
</Stack.Navigator>
</NavigationContainer>
);
}
Понимание хуков очень важно в React, поэтому вот ссылка на официальные документы: Представляем крючки