ReactNative 入坑

react-react-native-的es5-es6写法对照表

箭头函数中this的用法.md

1.watchman 问题

使用下面的方法进行手动安装就可以

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.9.0 # the latest stable release
./autogen.sh
./configure
make
sudo make install

2. RCTReconnectingWebSocket.h文件的#import <fishhook/fishhook.h> 显示error: 'fishhook/fishhook.h' file not found

解决:在package.json文件中添加如下代码:

"scripts": {
"postinstall": "sed -i '' 's#<fishhook/fishhook.h>#\"fishhook.h\"#g' ./node_modules/react-native/Libraries/WebSocket/RCTReconnectingWebSocket.m"
},

3. Unable to find a specification for 'yoga (=0.50.4.React)' depended upon by 'React/Core'

看了 react-native的issue 好像这个库还没有更新版本,所以我把 react 的版本降低到如下就 OK:

"dependencies": {
"react": "16.0.0-beta.5",
"react-native": "0.49.5",
},

4. 警告 BatchedBridge is deprecated

podfile 里将reactBatchedBridge 替换成 CxxBridge

5. undefined is not an object (evaluating 'Orientation.lockToPortrait')

这是关于设备的横竖屏适配的问题
解决方案:https://github.com/yamill/react-native-orientation/issues/43

6. 使用自定义字体的时候出现失败

这里以华康海报体 w12 为例:
解决方案:
0x1. 先把导入的字体资源改为 fontName:DFPHaiBaoW12
0x2. 把 xcode 里 plist 文件里的字体也改为DFPHaiBaoW12
0x3. 设置 js 里的样式fontFamily

btn: {
color: "white",
fontSize: 18,
fontFamily: 'DFPHaiBaoW12'
}

字体的fontFamily可以把下载的 ttf文件直接双击安装,然后在系统自带的字体册里看到关于这个字体的一切信息

7. Native module cannot be null

类似问题:https://github.com/react-navigation/react-navigation/issues/460

错误场景:外部Xcode导入 reactNative.而不是运行 react自带的 ios 项目
错误描述:当引入react-navigation并将其作为出口register 的时候会报错:Native module cannot be null
错误原因:react-navigation会生成一个原生的RCTLinkingIOS库,外部引用的需要手动导入,内部的自动链接
解决方法:在 podfile 中加入:RCTLinkingIOS

pod 'React', :path => '../../MathsGameRN/node_modules/react-native', :subspecs => [
'Core',
'RCTActionSheet',
'RCTGeolocation',
'RCTImage',
'RCTNetwork',
'RCTPushNotification',
'RCTSettings',
'RCTText',
'RCTVibration',
'RCTWebSocket',
'CxxBridge',
'RCTLinkingIOS'
]

8. swift 通过 RCTRootView 的 initPor传值不被识别,OC 可以

9. Undefined is not an object(evaluating ‘_react2.PropTypes.func’)

导入 propTypes 错误
正确方法:

//import PropTypes from 'react'; wrong

import PropTypes from 'prop-types'; //right

程序运行流程

1)组件导入区: 所有用到的组件都需要事先进行导入,包括样式也需要进行导入
2)核心代码区:所有逻辑代码编写的地方
3)组件样式区:render() 方法中用到的组件的样式,可以集中在这里编写
4)注册启动组件:组件只有注册后才能运行。这里用到的 AppRegistry 也需要在组件导入区进行导入

问题

  1. 如何调试
  2. 如果使用 native 的导航,那么原生可不可以拿到 native 的一些页面来做某些事情或者说,还是用原生的导航,然后在 native 中注册多个入口来实现
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容