Taro 编译 React Native 端,凡是影响到开发体验到问题,无论是开发流程优化、文档补全,或是容易踩到的坑,都可以在此列出来,帮助我们快速高效迭代。🔥🔥🔥
PS: 进 Taro RN 开发群可以统一回复凹凸小助手:RN

React Native 支持,需要加速了
请问React Native的版本大概什么时候出
React Native 不支持组合选择器,它样式都是在一个组件里,不太会遇到样式覆盖的问题,
但是转成 H5、小程序时就可能会遇到 class 同名样式冲突的问题了。
那如何来避免,或者怎样来写样式比较合理,只能都给 class 加上前缀么?
遇到的一些坑:
React Native 不支持组合选择器,它样式都是在一个组件里,不太会遇到样式覆盖的问题,
但是转成 H5、小程序时就可能会遇到 class 同名样式冲突的问题了。
那如何来避免,或者怎样来写样式比较合理,只能都给 class 加上前缀么?
@js-newbee
RN 的样式仅仅针对当前引入的文件生效,不同文件的 className 同名也没有影响。不过 app.scss 里面的样式是全局样式,这里面的样式命名就需要注意样式冲突的问题。
问题 3,4 已经反馈给组件开发的同学。
@js-newbee
请问React Native的版本大概什么时候出
beta 版已经可以尝鲜了。
本周将和 1.0.0 一起,正式发布。
@js-newbee
View 不支持 onClick ?如果要让一整块区域都可点击,又或者让一张图片可点击,应如何实现?
ReactNative 不支持嵌套点击,当你用了嵌套的 Touchable* 并点击了里面的 Touchable* 时,它的处理流程是这样的:
Parent onStartShouldSetResponder (true) >
Parent onStartShouldSetResponderCapture (false) >
Child onStartShouldSetResponder (true) >
Child onResponderGrant >
Child onResponderRelease
可以自行尝试
<ReactNativeView
onStartShouldSetResponder={() => true}
onStartShouldSetResponderCapture={() => true}
onResponderGrant={() => { console.log('grant outer') }}
onResponderRelease={() => { console.log('release outer') }}
>
<ReactNativeView
onStartShouldSetResponder={() => true}
onResponderGrant={() => { console.log('grant inner') }}
onResponderRelease={() => { console.log('release inner') }}
>
<Text>Click me</Text>
</ReactNativeView>
</ReactNativeView>
所以,应该由书写规范约束来实现你要的效果,图片点击为图片点击,图片之外的区域为外部的点击。
rn的编译能不能不依赖EXPO运行时,因为EXPO不能自定义添加原生组件的代码,或是你们有没好的方案,可以在EXPO的基础上使用自定义的原生组件
确实,不能自定义添加原生组件的代码是 expo 最大的弊端。不过 expo 的好处也是显而易见的,如:开发门槛低,不需要配置环境等,屏蔽原生代码等。
后期将会提供 添加原生组件的代码 解决方案。
@linjson
@js-newbee
有一些 React Native 组件支持的属性,例如 Text 的 numberOfLines,是否放开支持(RN 样式不支持 text-overflow)?
本来考虑的是样式全部通过CS所说的包来转换,还是太年轻,它能做的事有限,并不能把样式转成属性赋给组件,ReactNative 有 ellipsizeMode 和 numberOfLines ,前者的默认值 tail 类似 text-overflow: ellipsis 效果。我会更新到组件库中,到时候开发者就要把 numberOfLines 传进来实现 -webkit-line-clamp 的效果,这个属性对小程序和 H5 来说是多余的。
还有其他开发者有需求而且必要的属性,会加进去,但是——如果全属性支持,就跟用 ReactNative 本身来开发无异了。所以框架会越来越完善,让开发者少写这些特定环境才需要的代码。
@Pines-Cheng
Q: Taro.navigateTo(没反应), Taro.redirectTo(报错) 都无效?那如何进行页面跳转?
A: 必须保证你的 pages 页面配置和你跳转转入的 url 是一致的哦,看看两边是不是漏了 / 之类的。
是这原因没错,但目前有不一致的地方:
小程序的 config.pages 的路径不能以 / 开头,否则会报错;
那只能 Taro.navigateTo 的 url 也不能以 / 开头,这样 RN 才能正常跳转,但是在小程序里跳转的 url 不以 / 开头就会被识别为相对路径,变成如 /pages/index/pages/other/index,跳转不了...
这么坑。。那我来兼容一下路由的写法吧。 @js-newbee
@Pines-Cheng 好的 等您发布我们去体验下 我们公司现在也有不少业务是rn开发的 需要这样的解决方案 能减少不少工作量
@js-newbee 路由问题已 fix ,今天应该会发一版。
@AibiTi 在Taro裡直接用View就可以了
ERROR STARTING PACKAGER
Error: React native is not installed. Please run npm install in your project directory.
15:51:04: Error starting packager: Error: Couldn't start project. Please fix the errors and restart the project.
at E:xdlsrcProject.js:1329:11
at Generator.next (
at step (E:[email protected]@xdlbuildProject.js:1735:191)
at E:[email protected]@xdlbuildProject.js:1735:361
at
在 .rn_temp 目录下运行 npm install即可。@kivenC
在 .rn_temp 目录下运行
npm install即可。@kivenC
上面那个错误是在编译完成后出现的
我在 .rn_temp 目录下运行 npm install后又报错,错误如下:
npm ERR! path E:TaroProjectsmyApp.rn_tempnode_modulesanalytics-nodenode_modulesclone
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall access
npm ERR! enoent ENOENT: no such file or directory, access 'E:TaroProjectsmyApp.rn_tempnode_modulesanalytics-nodenode_modulesclone'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! C:UsersndAppDataRoamingnpm-cache_logs2018-10-24T08_22_11_807Z-debug.log
运行npm run dev:rn/taro build --type rn --watch时 找不到xdl依赖包下的Project.js文件
'E:TaroProjectsmyApp.rn_tempnode_modulesanalytics-nodenode_modulesclone'
你这路径有问题啊。@kivenC
多半是依赖安装的问题,在 .rn_temp 目录下删除 npm 依赖,然后运行 npm install重新安装即可。
如果还是有问题,可以提一个新的 issue ,附上详细信息和截图。@KimCongMax
'E:TaroProjectsmyApp.rn_tempnode_modulesanalytics-nodenode_modulesclone'
你这路径有问题啊。@kivenC
我把.rn_temp目录下的node_modules删除,重新运行npm install后出现一些警告,没有错误
可是我该如何打包运行呢?
在。rn_temp下expo build:android 打包成了apk,但是应用打不开,是app.json有什么需要注意的吗
@ztopia 建议单独提一个 issue ,然后完善描述和截图,方面复现和解答。

大家好:
如果是想把 React Native 集成到现有的原生项目中,能使用Taro的RN开发吗?感谢!
二维码过期了,来这里吧!

确实,不能自定义添加原生组件的代码是 expo 最大的弊端。不过 expo 的好处也是显而易见的,如:开发门槛低,不需要配置环境等,屏蔽原生代码等。
后期将会提供 添加原生组件的代码 解决方案。
@linjson
这个已经添加了吗?
@Pines-Cheng taro rn的核心微信群能拉下吗?最近已经在用taro开发rn了,目前遇到两个问题:
1,想引入支付宝和微信支付 ,最好调用原生的sdk,这里一般怎么做,文档 里过用openurl打开浏览器,感觉这样体验太差,现在有推荐的方案吗?
2,rn本向有一些navigator在raro我看 navigator 只实现了小程序端的 h5要可以用taro的api来实现,那 taro的rn端怎么实现呢?
3, taro的rn默认一直有一个header,这个page 里不配置,在app.js中也有个默认的,这个可以去掉吗?

相关配置如果都不配置的话,这里也是有一个空白的header

第三个问题和微信小程序一致,配置:navigationStyle:custom 即可。
@Pines-Cheng taro rn的核心微信群能拉下吗?最近已经在用taro开发rn了,目前遇到两个问题:
1,想引入支付宝和微信支付 ,最好调用原生的sdk,这里一般怎么做,文档 里过用openurl打开浏览器,感觉这样体验太差,现在有推荐的方案吗?
2,rn本向有一些navigator在raro我看 navigator 只实现了小程序端的 h5要可以用taro的api来实现,那 taro的rn端怎么实现呢?
3, taro的rn默认一直有一个header,这个page 里不配置,在app.js中也有个默认的,这个可以去掉吗?
相关配置如果都不配置的话,这里也是有一个空白的header
@Pines-Cheng 第一个问题有什么有什么体验好点的方案吗? react-native应该有实现的封装的原生sdk的包吧,taro中目前有什么办法用吗?
@westeast Taro 基于 expo 开发,expo 暂不支持引入原生 sdk,我们也在探索合适的解决方案。
@Pines-Cheng 能否再分享一下群的二维码,谢谢
请问RN端能否使用expo的数据库API,我发现直接在src中是不能使用的,没有expo包,是不是只能在rn_temp中才能用?
可以考虑提供一个可以运行taro rn的基础react-native-app,以独立的项目形式提供给开发者。大致的工作流程是:
@Pines-Cheng 能否再分享一下群的二维码,谢谢
@Pines-Cheng 投票中已经移除了对expo的依赖,请问哪个版本会做支持,什么时候发布?
下一个版本发布,文档已更新。
@Pines-Cheng 投票中已经移除了对expo的依赖,请问哪个版本会做支持,什么时候发布?
@Pines-Cheng 方便再分享一下taro rn核心交流群吗?
@gzqreder 在 Taro 大群里说明一下,我拉你。
方便在分享下taro-rn交流群么
@lifudea 人数已经满 100 ,不能通过扫码加入了。
我应该怎么加群啊
运行react-native壳子程序,报错 :expo-av:compileDebugJavaWithJavac,能否帮忙解决,谢谢
@2359634711 看起来像是依赖安装的问题。
目前正在把一个项目移植到RN上,发现两个问题:
1,css里的background不能使用linear-gradient函数
2,也不能使用box-shadow
运行react-native壳子程序,报错
Compilation failed; see the compiler error output for details.
Taro.redirectTo,在使用到tabbar的情况下,表现有异常:

在“我的”这个tab,检查用户登录态,然后 Taro.redirectTo 到登录页,就会出现截图这种情形。
@tourze 提一个单独的 issue?
想进群~现在小程序转RN有点问题
按照文档死活跑不起来rn的demo,壳子工程现在还有人维护吗
@qiaoyixuan 不至于吧。。
进 RN 群可以在任意的 Taro 群 @ 我,我来拉。
@Pines-Cheng 需要进群
@Pines-Cheng 进群一波 854767470
@Pines-Cheng 540053835求进rn群
@Pines-Cheng 帮我拉到交流群吧 ljx89677
进 Taro RN 开发群可以统一回复凹凸小助手:RN

之后单独开 issue 提问吧。
tabBar 设置了底部栏,H5和微信小程序图片都能显示,RN显示不出图片
Most helpful comment
确实,不能自定义添加原生组件的代码是 expo 最大的弊端。不过 expo 的好处也是显而易见的,如:开发门槛低,不需要配置环境等,屏蔽原生代码等。
后期将会提供 添加原生组件的代码 解决方案。
@linjson