React 前端导航

rax 框架开发钉钉小程序实践问题

rax 框架开发钉钉小程序实践问题

开发环境

Mac + Node 16.14.0 + Rax 1.1.0 + fusion mobile 2.6.6

问题及解决方案

IOS 输入中文无法输入

使用钉钉原生的textarea组件或者rax-textarea组件并启用composition,受控组件需要禁用native

更多方案详见:https://qianduan.shop/blogs/detail/52

无法自定义tabbar

自定义组件托管tabbar, 在自定义组件内控制tabbar的切换,这种方式目前有个问题是tab切换无法写入history,导致小程序的返回操作无法返回到上一个tab

小程序真机不支持CSS gap 属性

小程序真机不支持css float属性,::before伪元素设置float表现与模拟器不一致

小程序真机不支持 Promise.allSettle方法

小程序显然很小的节点会出现形状与预期不符的情况

比如宽高为10rpx的圆,真机上显示可能是圆或椭圆或正方形,解决办法是增加宽高,通过缩放实现想要的效果

滚动穿透

安卓可以在遮罩层的View组件上加disable-scroll属性达到效果,但这种方式在IOS不生效,IOS中目前发现能用的方法就是动态修改滚动元素的样式禁止滚动:overflow:hidden

Rax文档中ScrollView提供的scrollIntoView方法和scrollTo方法不起作用,原因未知,

替代方案是使用页面的pageScrollTo方法

Rax 监听onPageScroll和onReachBottom编译后有时候不生效,修改对应文件任何代码再次编译又可以生效,原因未知,

替代方案是使用ScrollView来做相应的锚点效果和滚动加载实现

原理上,registerNativeEventListeners 其实不是运行时方法,我们是通过文件扫描的方式发现该页面组件用到了这个方法,然后通过 AST 解析到需要注册哪些生命周期,最后再添加到 Page 对象上,比如的上述的代码,用到了 registerNativeEventListeners(Index, ['onReachBottom']),最终到小程序上就是:

Page({
onReachBottom() {
// 派发事件
}
});
如果没有注册的事件,最终不会出现在 Page 对象上,比如上述示例,onPageScroll 就不会被注册在 Page 上

参考资料:https://github.com/alibaba/rax/issues/2171

设置input placehoder颜色

原生钉钉组件:

<input placeholder='请输入' placeholder-style="color:red" placeholder-class="className" />

rax-textinput组件

<TextInput placeholder='请输入' placeholder-style="color:red"  placeholder-class="className" />

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/54

#rax#react#小程序#mobile

相关推荐

react中实现markdown文件读取展示

react中实现markdown文件读取展示

umi实践问题汇总--持续更新

在使用umi的过程中所遇到问题的记录汇总