RN开发的遇到的一些问题总结
2017-03-10 21:09
399 查看
1.首先是新项目npm install, 不能运行cnpm install ,那样会导致目录不对,安装文件在.npminstall的隐藏文件夹下,并且是软连接,然后运行会出现头文件找不到
2.rn 打包离线包 https://segmentfault.com/a/1190000004189538
react-native bundle --entry-file index.ios.js --bundle-output ./ios/bundle/index.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
改下oc里
3.jsx render()方法下html直接注释有问题
4.sublime打开项目的时候,不能在根目录npm run start,一直报事件流错误,然后导致在xcode里运行的时候会出现bundle是nill,这个可能和个人编辑器有关.
5.当fetch数据时候直接报 Network request failed,而网络是好的时候,看看xcode里的错误信息,是不是http被block了,在Xcode下plist文件里改下配置Allow Arbitrary Loads设置成YES就好
6.注意箭头函数的this指针,这个是es6的语法,我定义的一个模块Util,像下面这样使用
7.AsyncStorage这是个异步进行存取值的对象,setItem和getItem返回的是个promise,像下面这样是取不到值的
只能在then里的回调取,但是那样你就只能把处理放在then的回调里面。比如我要取两个保存在AsyncStorage下的值,只有这两个值都有了,才能进行签名
疯了,两层嵌套
可以使用 async/await来同步异步返回,就像下面
这样就清楚多了
8.这个其实和RN无关,是http请求的东西,http,要么get,直接url,post的话有表单和Json格式,如下两种
View Code
有了上面的方法,把上面的那个json参数data作为传入处理下就行了
9. 运行出现Can't find 'node' binary to build React Native bundle 错误
先which node,找到node路径,然后在Build Phases如下修改
![](https://images2017.cnblogs.com/blog/707433/201802/707433-20180206143907091-2142443117.png)
10. build & run的时候出现 'bundleURL must be non-nil when not implementing loadSourceForBridge'
Product > Scheme > Edit Scheme > set
![](https://images2017.cnblogs.com/blog/707433/201802/707433-20180206151101216-1954716766.png)
如果要debug模式,这里还是改成debug,然后一定要在项目目录跑npm run start命令,也就是要起server
11.
2.rn 打包离线包 https://segmentfault.com/a/1190000004189538
react-native bundle --entry-file index.ios.js --bundle-output ./ios/bundle/index.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
改下oc里
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; //开发时使用 // jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"index.ios" withExtension:@"jsbundle"]; //added by john,使用打包的离线包
3.jsx render()方法下html直接注释有问题
4.sublime打开项目的时候,不能在根目录npm run start,一直报事件流错误,然后导致在xcode里运行的时候会出现bundle是nill,这个可能和个人编辑器有关.
5.当fetch数据时候直接报 Network request failed,而网络是好的时候,看看xcode里的错误信息,是不是http被block了,在Xcode下plist文件里改下配置Allow Arbitrary Loads设置成YES就好
6.注意箭头函数的this指针,这个是es6的语法,我定义的一个模块Util,像下面这样使用
let Util = { fn1:()=>{ ... }, fn2:()=>{ this.fn1() //错误 Util.fn1() //正确 } }
7.AsyncStorage这是个异步进行存取值的对象,setItem和getItem返回的是个promise,像下面这样是取不到值的
let varifyTime = Util.storageGetItem('varifyTime') let varifyCode = Util.storageGetItem('varifyCode')
只能在then里的回调取,但是那样你就只能把处理放在then的回调里面。比如我要取两个保存在AsyncStorage下的值,只有这两个值都有了,才能进行签名
Util.storageGetItem('varifyTime').then(function(varifyTime){ let varifyTime = varifyTime; Util.storageGetItem('varifyTime').then(function(varifyCode){ let varifyCode = varifyCode let encryptstr = Util.encrypt(varifyCode,varifyTime); //这里是去签名 }) })
疯了,两层嵌套
可以使用 async/await来同步异步返回,就像下面
Sign:async(data) => { let dataStr = JSON.stringify(data) let varifyTime = await Util.storageGetItem('varifyTime'); let varifyCode = await Util.storageGetItem('varifyCode'); let encryptstr = Util.encrypt(varifyCode, varifyTime); }
这样就清楚多了
8.这个其实和RN无关,是http请求的东西,http,要么get,直接url,post的话有表单和Json格式,如下两种
transFormparam :(obj) => { var query = '', name, value, fullSubName, subName, subValue, innerObj, i; for (name in obj) { value = obj[name]; if (value instanceof Array) { for (i = 0; i < value.length; i++) { subValue = value[i]; fullSubName = name + '[' + i + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += param(innerObj) + '&'; } } else if (value instanceof Object) { for (subName in value) { subValue = value[subName]; fullSubName = name + '[' + subName + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += param(innerObj) + '&'; } } else if (value !== undefined && value !== null) query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&'; } return query.length ? query.substr(0, query.length - 1) : query; },
View Code
有了上面的方法,把上面的那个json参数data作为传入处理下就行了
9. 运行出现Can't find 'node' binary to build React Native bundle 错误
先which node,找到node路径,然后在Build Phases如下修改
![](https://images2017.cnblogs.com/blog/707433/201802/707433-20180206143907091-2142443117.png)
10. build & run的时候出现 'bundleURL must be non-nil when not implementing loadSourceForBridge'
Product > Scheme > Edit Scheme > set
run configurationto
Release.
![](https://images2017.cnblogs.com/blog/707433/201802/707433-20180206151101216-1954716766.png)
如果要debug模式,这里还是改成debug,然后一定要在项目目录跑npm run start命令,也就是要起server
11.
相关文章推荐
- [开发总结]WebView使用中遇到的一些问题&解决
- SDN开发过程中遇到的一些问题总结
- APICloud框架——总结一下最近开发APP遇到的一些问题 (二)
- 项目开发中经常遇到的一些问题总结
- jquerymobile1.4开发过程中遇到的一些问题总结
- APICloud框架——总结一下最近开发APP遇到的一些问题
- 转 [开发总结]WebView使用中遇到的一些问题&解决
- 近段时间在开发中遇到的一些问题的总结
- 开发CRM中遇到的一些问题总结
- 开发过程中 遇到的一些小问题 总结一下
- (原创)开发使用Android studio所遇到的一些问题总结
- dwz问题(本文主要是供个人学习成长之用,陈述的是本人在开发过程中遇到的几个小问题的总结,可能兼或插入一些网络资料)
- [开发总结]WebView使用中遇到的一些问题&解决
- (原创)开发使用Android studio所遇到的一些问题总结
- iOS开发之适配IPV6更新网络处理为AFNetworking3.x, 集成以及遇到的一些问题总结。
- iOS开发中遇到的一些问题以及解决办法总结
- APICloud框架——总结一下最近开发APP遇到的一些问题 (三)
- flv录制开发遇到的一些问题总结
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- Android 开发中的遇到的一些细节问题总结