如何修复 null 不是对象 React Native Splash Screen
2020-07-10
4714
我完全按照以下说明操作: 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>
);
}
}
应用程序运行完全符合要求,但只有 Web 我删除了 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
我尝试手动安装,确保安装了 react-native-splash-screen 并运行 npm install,但似乎没有任何效果。
2个回答
运行
react-native run-ios
后
我发现我正在手动链接 react-native-splash-screen 包,而我使用的 react-native 版本支持自动链接。
运行
react-native unlink react-native-splash-screen
然后运行 ​​
react-native run-ios
后,我的问题得到了解决。
everydayprogrammer
2020-07-12
我的想法是,您应该在 setTimeout() 函数的回调中调用 SplashScreen.hide() 函数。这里:
componentDidMount() {
setTimeout(1000, () => SplashScreen.hide());
}
如果这不起作用,请尝试检查 SplashScreen 对象保存了什么值。
Hamza Murtaza
2020-07-12