文章标题

    xiaoxiao2021-12-14  23

    问题总结

    1.语法的问题

    由于好多资料给的代码示例都是比较早的,所以好多都是用的ES5语法,但是Facebook提倡使用ES6的语法,而且官方的好多都是ES6的语法代码,所以当时老是把ES5和ES6语法混合在一起写,导致出现了很多问题。具体区别可以参考http://bbs.reactnative.cn/topic/15/react-react-native-的es5-es6写法对照表/2,最好使用最新的ES6语法,也是官方推荐。

    2.本地服务器

    RN自带的服务器,如果想要进行开发和调试必须开启该服务器,如果是init的项目,在运行时会自动开启改服务器,但是关闭的时候一定记得关闭服务器,不然下次运行的时候上次开启的服务器会继续运行,导致无法编译成功。安卓的好像不能自动开启服务器,需要手动开启。 如果是将RN嵌入到已有的项目中,则必须手动开启服务器。开启方法是现在根目录的json文件里添加react服务器路径,”start”: “node_modules/react-native/packager/packager.sh”,如下图:然后在终端切换到该项目根目录下,npm run start指令进行开启

    3.安装home-brew问题

    ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”遇到无法安装的问题,可以按照下面的方法解决: (需要翻墙,这里的翻墙不仅是浏览器的翻墙,而且还要给终端翻墙,方法是:在~/.curlrc中设置 socks5 = “127.0.0.1:1080”就搞定了 vi ~/.curlrc,不然安装不了) 4.RN导入问题 使用cocoa pods导入react,方法是根据官方的podfile文件书写格式 pod ‘React’, :path => ‘./node_modules/react-native’, :subspecs => [ ‘Core’, ‘RCTImage’, ‘RCTNetwork’, ‘RCTText’, ‘RCTWebSocket’, ] 遇到导入失败的问题,是由于path没有写对(需要注意的时这个path指的路径是对应于你的podfile文件的相对路径)

    5.安卓环境配置问题

    安装完android-ask后没有link成功,执行brew link android出现没有权限打开的提示,用sudo chown -R whoami:admin /usr/local/bin开启权限即可,然后执行android命令

    6.iOS原生view的navigationController问题

    当我们需要跳转到原生view时,就可以用这个方法,不过这里有个大坑,就是当js触发这个方法时,会将所有在这个原生view的属性值都改变,所以在这个方法里,所有的属性值都要重新获取,故navigationController就不能直接用,需要先手动获取当前viewController,再跳转

    7.listview问题

    早期使用listview,改变某行的数据总是不成功,才发现listview的使用有些不一样:RN中要想修改单个item中的值,需要传递sectionID和RowID,先找到这个值,直接在这个数组中修改,修改后把整个数组重新给Listview

    8.服务器开启后还是报错

    如果是在一个新建的项目中,可能会遇到这样的问题:开启了8081服务器,代码无误,原生和JS的衔接名字也保持一致,但是就是出现can not conect to server的错误,大多是因为没有允许https链接,只需在Info.plist中添加NSAppTransportSecurity类型Dictionary。 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

    9.CMD+R不能刷新问题

    CMD+R不能刷新一般是因为没有勾选keyboard中的”Connect hardware keyboard”

    10.Homebrew问题

    修改某些关于brew的配置文件时,有时发现brew的指令都用不了,这时先看一下brew中的git文件: git status in git status in /usr/local 在/usr/local中执行git status 查看home-brew状态,发现都被deleted,执行git reset –hard还原即可

    11.ios打包遇到的问题

    1.必须用Create folder references【蓝色文件夹图标】的方式引入图片的assets,否则引用不到图片 2.执行bundle命令之前,要保证相关的文件夹都存在 我知道的有两种打包方式: 一是需要用到RN的打包指令,二是用把bundle和资源文件放在app包中。第二种我没有试过,因为这个好像不能实现热更新 RN打包指令:react-native bundle –entry-file index.ios.js –bundle-output ./iosBundle/index.ios.bundle –platform ios –assets-dest ./iosBundle –dev false –entry-file:需要被打包的JS文件 –bundle-output:打包后的文件存放路径(相对路径) –platform:平台 –assets-dest:资源文件存放路径(相对路径) –dev:是否为调试模式(调试模式打包出来的文件大小比非调试模式大三四倍左右)

    12.网络请求问题

    Fetch类似Web开发中ajax fetch(request_url, { method: ‘POST’, headers: { ‘XTOKEN’: ReactView.token, ‘Content-Type’: ‘application/json; charset=UTF-8’

    }, body: JSON.stringify({ 'subjectActivityId’:12 })

    }) .then((response) => response.json()) .then((responseData) => { console.log(responseData); }) .catch((e) => { console.log(e) }) .done(); 这是整个的fetch请求的代码,需要注意的是catch要写在最后,虽然写在最后,但是只要有网络错误,catch会第一时间断到错误

    转载请注明原文地址: https://ju.6miu.com/read-963252.html

    最新回复(0)