React Native 常见问题

1.端口被占用:

1.查看端口被占用情况
lsof -i:8081     
输出:
COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    6234 liang   21u  IPv6 0x3167a7d7b37ee3ad      0t0  TCP *:sunproxyadmin (LISTEN)
2.杀掉这个进程
kill -9 6234  

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

2.启动时有白色的闪屏现象:

当应用启动时,启动图结束后出现白屏的瞬间,这个过程是加载jibundle包的过程,jibundle包加载完毕之前没有内容,所以才出现了白屏。
解决方案:
延迟启动图的消失,在首页componentWillMount关闭启动图

  • 原生代码实现:

SplashScreen.h

#import 
#import 

@interface SplashScreen : NSObject
+ (void)show;
@end

SplashScreen.m

#import "SplashScreen.h"
static bool waiting = true;
@implementation SplashScreen
- (dispatch_queue_t)methodQueue{
  return dispatch_get_main_queue();
}
RCT_EXPORT_MODULE()

+ (void)show {
  while (waiting) {
    NSDate* later = [NSDate dateWithTimeIntervalSinceNow:0.1];
    [[NSRunLoop mainRunLoop] runUntilDate:later];
  }
}

RCT_EXPORT_METHOD(hide) {
  dispatch_async(dispatch_get_main_queue(),
                 ^{
                   waiting = false;
                 });
}
@end

  • 使用:
1.在AppDelegate.m 延时显示启动图
didFinishLaunchingWithOptions 方法 return YES之前加上
  [SplashScreen show];
2. 在React Native 中 隐藏启动图
 componentWillMount (){
        if (Platform.OS === 'ios') {
            let SplashScreen = NativeModules.SplashScreen;
            SplashScreen.hide();
        }
    }

3.真机调试 No bundle URL present 杀掉模拟器什么的也不起作用

在build Phases ->Bundle React Native code and images 添加脚本

export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh

你可能感兴趣的:(React Native 常见问题)