1、SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
解决方法:编辑在工程根目录/android/local.properties文件,如果没有请新建,在文件中写入
sdk.dir=/Users/xxx/Library/Android/sdk =后面是你的SDK安装目录
2. 几种异常情况分析
(1)正常情况总结
- onPress属性方法中只要未使用箭头函数调用方法时,方法名后面都不可以带小括号。
- 使用前两种方法处理事件时,不可传递参数;如果想传递参数就必须使用第三种方式
- 在不需要传递参数时,尽量使用前两种方式
(2)异常情况总结
- 前两种方式如果在调用方法时添加了小括号,事件处理会在加载完页面之后自动执行。
- 在最新版本中Button或者TouchableOpacity标签中,onPress属性在调用事件处理方法时使用第一种方式,但是未在构造方法中绑定。使用this.handleEvent方式也可调用事件处理方法,如果后面也加上小括号,同样会出现页面加载完毕,自动加载事件处理方法的状况。
- 第三种方式存在一定问题,每当Button或者TouchableOpacity绘制的时候,都会创建一个不同的callback。大多数情况下,这种方法是没有问题的。但是当callback被当做属性传递到下级组件的时候,这些下级组件会执行多余的重新绘制动作。
3、删除Xcode缓存记录
按快捷键 shift+command+G 或者 Finder图标点击右键选 前往文件夹... 调出前往文件夹框
在里面输入如下
/Users/(自己电脑名字)/Library/Developer/Xcode/DerivedData
5、React-native error: PCH was compiled with module cache path 'but the path is currently
打开项目目录ios文件夹找到---->build---->ModuleCache,删除再次执行react-native run-ios
6、Android Failed Override
Native moduleNative module RCTCameraModule tried to override RCTCameraModule for module name RCTCameraModule. If this was your intention, set canOverrideExistingModule=true
找到android/app/src/main/java/com/xxx/MainApplication.java,找到里面的重复的引用,把重复的部分删除后再运行react-native run-android
7、Unhandled JS Exception: TypeError: undefined is not an object (evaluating'this._subscribableSubscriptions.forEach')
https://github.com/facebook/react-native/issues/17348
The issue is caused by the uglify-es@3.3.2,back to 3.2.2
npm install -save uglify-es@3.2.2
(1) 通过navigate函数实现界面之间跳转:this.props.navigation.navigate('Home');
参数为我们在StackNavigator注册界面组件时的名称。同样也可以从当前页面返回到上一页:this.props.navigation.goBack();
(2)跳转时传值:this.props.navigation.navigate('Home', { key: 'value' });
(3)获取值:{ this.props.navigation.state.param.key }
8、CodePush热更新
code-push app add 添加一个新的APP
code-push app add MyApp Android react-native
code-push app add MyApp iOS react-native
发布更新
code-push release-react <appName> <platform>
例:code-push release-react MyApp-iOS ios
code-push release-react MyApp-Android android
9、使用Flatlist时IOS可以完整展示ListFooterComponent底部布局,遇到Android展示不全
取消Flatlist的父布局高度设置便可以解决此问题
10、按钮限制圆角后出现毛刺问题
设置overFlow=‘hidden’即可解决
11、View中的Text文本实现换行只要在需要换行处加一个“{\n}”
<Text style={{fontSize:12}}>第一行{"\n"}第二行</Text>