记录遇到的问题以及如何解决。
npm install create-react-native-app -g
安装,通过 create-react-native-app
命令来初始化你的应用。特点是:这种方式官方说是不需要安装 Xcode 或者 Android Studio,也不需要配置任何工具来构建代码,只要在手机安装 Expo 客户端,借用第三方客户端开发,发布应用的时候也是将应用托管到 Expo 上。缺点是:如果你想在模拟器上看效果还是得装 Xcode,发布的时候只是在 Expo 上发布,用户想要使用你的 App 必须先安装 Expo 才能使用。另外一种是使用 npm install -g react-native-cli
安装,这种方式特点是:开发完成可以直接发布到市场/APP STORE 不需要借助第三方客户端,缺点是:配置麻烦,需要修改原生代码。__dev__
变量为true
的情况,参考这个链接解决。LaunchScreen.xib
用 Xcode 打开,即可修改。AsyncStorage.getItem/setItem
是异步的,返回的是一个 promise 对象,与 web 的 localStorage
获取机制不一样。Scrollview
组件,复杂的数据列表使用 Listview
/ FlatList
组件。require(fileName + '.png')
),解决:if (...) { require(...) } else { require(...) }
或者以对象的形式引入。Animated
组件完成,性能最好,比 web 实现的方式好,链接。DeviceEventEmitter
对象实现。Image
组件需要指定大小,否则不显示。Modal
组件可以覆盖原生视图,可以做弹出层/模态框等效果。componentDidCatch
捕获异常错误,RN里只能捕获render
函数的异常,RN componentDidCatch 、componentDidCatch。new URL(url)
方法无效报错,自己实现或使用第三方库。TextInput
组件解决:通用解决方案、当 Modal 与 KeyboardAvoidingView 使用时。TextInput
获得焦点时,模拟器不出现键盘,模拟器顶部菜单勾选 Hardware -> Keyboard -> Toggle Software keyboard。react-navigation
:
react-native-navigation
: