Как создать экран spla sh внутри реагирующей навигации без использования других библиотек и плагинов - PullRequest
0 голосов
/ 05 апреля 2020

Я создаю реактивное приложение без использования фреймворков, таких как expo и другие. Я пытаюсь создать экран spla sh внутри реагирующей навигации, не используя пакет npm и другую библиотеку, поэтому мой вопрос: как мне этого добиться?

const StackNavigation = (props) => {
   return (
    <Stack.Navigator initialRouteName="Splash"  >
        <Stack.Screen name="Home" component={HomeScreen} options={({ navigation, route }) => 
    ({
            headerLeft: props => (
                <Icon
                    name='rowing'
                    color='#00aced'
                    onPress={() => navigation.openDrawer()}
                />

            )
        })} />
        <Stack.Screen name="Post" component={PostScreen} />
        <Stack.Screen name="Splash" component={SplashScreen} options={{headerShown: false}}/>
    </Stack.Navigator>
);
}

1 Ответ

0 голосов
/ 05 апреля 2020

Одной из проблем, связанных с добавлением экрана Spla sh с использованием только React-native, является то, что вы будете видеть уродливый белый экран при каждом запуске приложения, этот белый экран может длиться 5-20 секунд. Это потому, что когда ваше приложение запускается, оно должно загрузить React-native для запуска ваших кодов, в течение этого периода ваши коды даже не начали запускаться, поэтому появляется белый экран.

Однако, если вы не не заботясь о белом экране, вот мое решение, оно не требует реакции-навигации, просто покажите экран spla sh в componentDidMount () или useEffect () с требуемым временем задержки в setTimeout ()

import React, {useState, useEffect} from 'react';
import { Text, View, StyleSheet, Image } from 'react-native';

export default function App() {

  const [splash, setSplash] = useState(true);
  useEffect(() => {
    setTimeout(() => {
      setSplash(false);
    }, 1000);
  }, []);

  return splash ? 
  (<View style={styles.container}>
  <Image style={styles.logo} source={require('./assets/snack-icon.png')} />
  </View>) : (
    <View style={styles.container}>
      <Text style={styles.paragraph}>
        Home Screen
      </Text>
    </View>
  );
}

Вот закуска https://snack.expo.io/Y4ZfWkc9g

Если вам нужно избежать белого экрана, вы должны поиграть в Android Studio, к счастью, есть несколько npm библиотеки, которые помогут вам избежать этого

https://github.com/zoontek/react-native-bootsplash

https://github.com/crazycodeboy/react-native-splash-screen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...