钉钉⼩程序开发遇到的坑
⼀、技术背景
⼆、需求
三、功能实现
四、钉钉⼩程序与⼩程序的区别
五、开发中遇到的问题及解决⽅案:
1、dd.navigateTo跳转到 tabbar 页⾯,底部不显⽰tab 栏?
解决⽅案:dd.navigateTo 和 dd.redirectTo 不允许跳转到 tabbar 页⾯;如果需要跳转到 tabbar 页⾯,请使⽤ dd.switchTab。
2、登录页⾯报错:setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op.Please check the code for the xxx component.
原因:登录页⾯⽤了计时器,当页⾯跳转到主页后,登录页被关闭,但计时器的setData依然在执⾏
解决⽅案:在onUnload⾥执⾏清除计时器→ onUnload() { untdownHoldStop()},
3、事件如何传参?
(1)给组件设置data-*属性,如:<view class="item-box" data-item="{{item}}" onTap="toSignedDetailPage">
(2)获取参数:toSignedDetailPage(event){console.log(event.target.dataset.item)}
4、当参数为对象或数组时,页⾯跳转时如何传递参数?
解决⽅案:
登录页面背景图(1)通过encodeURIComponent() 函数可以把字符串作为 URI 组件来进⾏编码,例如:
let detailData=JSON.stringify(event.target.dataset.itemDetail)
dd.navigateTo({ url: '/pages/signedDetail/signedDetail?detailData='+encodeURIComponent(detailData) })
(2)在跳转到⽬标页⾯接收时⽤decodeURIComponent对URI 组件进⾏解码,后⾯在通过JSON.parse()将变量还原,这样⼦就能达到预期效果了。
例如:let jsonData=decodeURIComponent(query.detailData)
5、scroll-view(可滚动视图区域)设置height:100%或flex:1⽆效
解决⽅案:可以动态计算⾼度或者使⽤height:calc(100vh) 。⼀定要给 scroll-view 设置⽅向属性如:scroll-y="{{true}}"
6、⽗⼦组件如何通信?
7、各个单独页⾯的json⽂件的defaultTitle配置不⽣效?
解决⽅案:通过dd.setNavigationBar设置,例如: dd.setNavigationBar({title: "登录"}),放在onLoad⾥
六、钉钉⼩程序存在的bug
1、dd.showToast经常不起作⽤
2、canvas执⾏clearRect()清除后依然存在,不能有效清除
3、⾃定义组件路径⼀定要放在项⽬根⽬录,否则会解析不出来
七、钉钉⼩程序H5集成
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论