Как исправить, что null не является объектом React Native Spla sh Screen - PullRequest
1 голос
/ 10 июля 2020

Я точно выполнил инструкции из этого: https://www.npmjs.com/package/react-native-splash-screen А также просмотр видео на YouTube, которое проходит по тем же шагам.

Мой код:

import * as React from 'react';    
import SplashScreen from 'react-native-splash-screen';
import HomePage from './src/Home';
import {navigationRef} from './RootNavigation';
import * as RootNavigation from './RootNavigation.js';

const Stack = createStackNavigator();

export default class App extends React.Component {
  componentDidMount() {
    setTimeout(1000);
    SplashScreen.hide();
  }
  render() {
    return (
      <NavigationContainer ref={navigationRef}>
        <Stack.Navigator>
          <Stack.Screen
            name="Home"
            component={HomePage}
          />
        </Stack.Navigator>
      </NavigationContainer>
    );
  }
}

Приложение работает именно так, как должно, но только в Интернете. Я удаляю метод componentDidMount. Строка, в которой я установил SplashScreen.hide (); это то, что вызывает ошибку.

Я получаю следующую ошибку:

TypeError: null is not an object (evaluating '_reactNativeSplashScreen.default.hide')

This error is located at:
    in App (at renderApplication.js:45)
    in RCTView (at AppContainer.js:109)
    in RCTView (at AppContainer.js:135)
    in AppContainer (at renderApplication.js:39)

componentDidMount
    App.js:47:4

Я попытался выполнить ручную установку, убедившись, что response-native-spla sh -screen установлен и запущен npm install, но ничего не работает.

Ответы [ 2 ]

1 голос
/ 12 июля 2020

После запуска react-native run-ios

я обнаружил, что вручную связывал пакет response-native-spla sh -screen, когда версия react-native, которую я использую, поддерживает автоматическое связывание.

После запуска react-native unlink react-native-splash-screen, а затем react-native run-ios это устранило мою проблему.

0 голосов
/ 12 июля 2020

Я думаю, что вам следует вызвать функцию SplashScreen.hide () в обратном вызове вашей функции setTimeout (). Здесь:

componentDidMount() {
    setTimeout(1000, () => SplashScreen.hide());
}

Если это не сработает, попробуйте проверить, какое значение содержит объект SplashScreen.

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