按住特马克 發表於 2019-12-24 18:34:00

钉钉小程序开发遇到的坑

<p><strong>一、技术背景</strong></p>
<p><strong>二、需求</strong></p>
<p><strong>三、功能实现</strong></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;根据钉钉开发文档进行钉钉小程序原生开发https://ding-doc.dingtalk.com/doc#/dev/ed25rr</p>
<p><strong>四、钉钉小程序与微信小程序的区别</strong></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;可参考:https://www.cnblogs.com/dora-zc/p/10963644.html</p>
<p><strong>五、开发中遇到的问题及解决方案:</strong></p>
<p>1、dd.navigateTo跳转到&nbsp;tabbar&nbsp;页面,底部不显示tab 栏?</p>
<p><span style="color: rgba(0, 128, 0, 1)">解决方案:dd.navigateTo 和 dd.redirectTo 不允许跳转到 tabbar 页面;如果需要跳转到 tabbar 页面,请使用 dd.switchTab。</span></p>
<p>&nbsp;</p>
<p>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.</p>
<p>原因:登录页面用了计时器,当页面跳转到主页后,登录页被关闭,但计时器的setData依然在执行</p>
<p><span style="color: rgba(0, 128, 0, 1)">解决方案:在onUnload里执行清除计时器 →&nbsp; &nbsp;&nbsp;onUnload() {&nbsp;this.countdownHoldStop()},</span></p>
<p>&nbsp;</p>
<p><span style="color: rgba(0, 0, 0, 1)">3、事件如何传参?</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">(1)给组件设置data-*属性,如:&lt;view&nbsp;class="item-box"&nbsp;data-item="{{item}}"&nbsp;onTap="toSignedDetailPage"&gt;</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">(2)获取参数:toSignedDetailPage(event){console.log(event.target.dataset.item)}</span></p>
<p>&nbsp;</p>
<p>4、当参数为对象或数组时,页面跳转时如何传递参数?</p>
<p><span style="color: rgba(0, 128, 0, 1)">解决方案:</span></p>
<p>(1)通过encodeURIComponent() 函数可以把字符串作为 URI 组件来进行编码,例如:</p>
<p>let&nbsp;detailData=JSON.stringify(event.target.dataset.itemDetail)</p>
<p>dd.navigateTo({&nbsp;url:&nbsp;'/pages/signedDetail/signedDetail?detailData='+encodeURIComponent(detailData) })</p>
<p>(2)在跳转到目标页面接收时用decodeURIComponent对URI 组件进行解码,后面在通过JSON.parse()将变量还原,这样子就能达到预期效果了。</p>
<p>例如:let&nbsp;jsonData=decodeURIComponent(query.detailData)</p>
<p>&nbsp;</p>
<p>5、scroll-view(可滚动视图区域)设置height:100%或flex:1无效</p>
<p><span style="color: rgba(0, 128, 0, 1)">解决方案:可以动态计算高度或者使用height:calc(100vh) 。一定要给 scroll-view 设置方向属性 如:scroll-y="{{true}}"&nbsp;</span></p>
<p>&nbsp;</p>
<p>6、父子组件如何通信?</p>
<p>https://www.cnblogs.com/wgl0126/p/11419345.html</p>
<p>&nbsp;</p>
<p>7、各个单独页面的json文件的defaultTitle配置不生效?</p>
<p><span style="color: rgba(0, 128, 0, 1)">解决方案:通过dd.setNavigationBar设置,例如: dd.setNavigationBar({title: "登录"}),放在onLoad里</span></p>
<p>&nbsp;</p>
<p><strong>六、钉钉小程序存在的bug</strong></p>
<p>1、dd.showToast经常不起作用</p>
<p>2、canvas执行clearRect()清除后依然存在,不能有效清除</p>
<p>3、自定义组件路径一定要放在项目根目录,否则会解析不出来</p>
<p>&nbsp;</p>
<p><strong>七、钉钉小程序H5集成</strong></p>

</div>
<div id="MySignature" role="contentinfo">
    作者:cristina-guan <br>
博客地址:http://www.cnblogs.com/cristina-guan/ <br>
github地址:https://github.com/CristinaGuan<br>
注:转载请注明出处,尊重别人的劳动成果,谢谢!<br><br>
来源:https://www.cnblogs.com/cristina-guan/p/12092993.html
頁: [1]
查看完整版本: 钉钉小程序开发遇到的坑