微信小程序第二次進入頁面時setData成功,但界面不刷新的解決辦法


1. 問題描述:

用小程序實現了一個NFC讀取NFC tag並顯示的頁面,發現第一次進入頁面時,讀取和顯示都正常。返回主頁面,再次進入nfc讀取頁面,此時能夠讀取到值(log this.data有正確的值),但界面不刷新,顯示不出來。

2. 原因分析:

在onshow中寫了個測試setData, 第二次進入仍能正常更新,說明setData刷新沒有問題。

但第一次和第二次有啥差異呢?猜測第二次進入時的Page實例和第一次是不一樣的,即this指向的對象不同

觀察到第一次進入和第二次進入的頁面全局變量仍能保持,所以就有了下面的解決方法。

3. 解決辦法:

定義個全局變量:

let mythis = null;

在onShow中賦值:

  onShow: function () {
        mythis = this;
  },

在NFC讀取值時用mythis.setData

 mythis.setData({  //手動高亮
            read:{
              id : buf2hex(new Uint8Array(item.id)),
              payload : buf2hex(new Uint8Array(item.payload)),
              type : buf2hex(new Uint8Array(item.type))
            }
          });

測試發現問題解決了。


免責聲明!

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



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