После инициализации шаблона Expo-проекта «вкладки» процедура запуска приложения React Native выглядит следующим образом:
React.useEffect(() => {
async function loadResourcesAndDataAsync() {
try {
SplashScreen.preventAutoHide();
// Load our initial navigation state
setInitialNavigationState(await getInitialState());
// Load fonts
await Font.loadAsync({
...Ionicons.font,
'space-mono': require('./assets/fonts/SpaceMono-Regular.ttf'),
});
} catch (e) {
// We might want to provide this error information to an error reporting service
console.warn(e);
} finally {
setLoadingComplete(true);
SplashScreen.hide();
}
}
loadResourcesAndDataAsync();
}, []);
Документация Expo о создании spla sh экран держится дольше "просто демонстрирует:
import { SplashScreen } from 'expo';
SplashScreen.preventAutoHide();
setTimeout(SplashScreen.hide, 5000);
Проблема в том, что я бы хотел, чтобы экран spla sh оставался включенным, если фон / следующий вид все еще отображается, а не просто в ожидании произвольного количества времени. Например, если время рендеринга занимает 0,2 секунды, и я хочу, чтобы страница spla sh работала в течение 2 секунд, я бы хотела, чтобы страница spla sh закрывалась через 2 секунды. Если время рендеринга занимает 2,8 секунды, я бы хотел, чтобы страница spla sh оставалась на 2,8 секунды. Какой лучший способ добиться этого?