Реалистичная реакция-родной-экран-заставка имеет довольно хорошую реализацию для этого.
После установки и связывания собственных зависимостей вы можете управлять отображением заставки вваш собственный код:
Android:
public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this); // here
super.onCreate(savedInstanceState);
}
// ...other code
}
iOS:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...other code
[RNSplashScreen show]; // here
// or
//[RNSplashScreen showSplash:@"LaunchScreen" inRootView:rootView];
return YES;
}
Затем в вашем коде React вы можете указать, когда скрыть заставку
React Component:
componentDidMount() {
// do stuff while splash screen is shown
// After having done stuff (such as async tasks) hide the splash screen
SplashScreen.hide();
}
React Hooks (скрыть после загрузки компонента):
React.useEffect(() => {
SplashScreen.hide();
}, []);
React Hooks (скрыть после тайм-аута):
const [hideSplash, setHideSplash] = React.useState(false);
React.useEffect(() => {
setTimeout(() => {
setHideSplash(true);
}, 1000); // amount of time the splash is shown from the time component is rendered
}, []);
React.useEffect(() => {
hideSplash && SplashScreen.hide();
}, [hideSplash]);
// ...