釘釘小程序開發遇到的坑


一、技術背景

二、需求

三、功能實現

       根據釘釘開發文檔進行釘釘小程序原生開發https://ding-doc.dingtalk.com/doc#/dev/ed25rr

四、釘釘小程序與微信小程序的區別

       可參考:https://www.cnblogs.com/dora-zc/p/10963644.html

五、開發中遇到的問題及解決方案:

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() { this.countdownHoldStop()},

 

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、父子組件如何通信?

https://www.cnblogs.com/wgl0126/p/11419345.html

 

7、各個單獨頁面的json文件的defaultTitle配置不生效?

解決方案:通過dd.setNavigationBar設置,例如: dd.setNavigationBar({title: "登錄"}),放在onLoad里

 

六、釘釘小程序存在的bug

1、dd.showToast經常不起作用

2、canvas執行clearRect()清除后依然存在,不能有效清除

3、自定義組件路徑一定要放在項目根目錄,否則會解析不出來

 

七、釘釘小程序H5集成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM