国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

香港云服务器
服務器之家 - 編程語言 - JavaScript - js教程 - 微信小程序如何監聽全局變量

微信小程序如何監聽全局變量

2022-02-25 16:28Vegetable_dog js教程

這篇文章主要給大家介紹了關于微信小程序如何監聽全局變量的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

最近工作上遇到一個問題,有個全局變量 red_heart,因為它在很多地方用到,當它發生改變了,用到的地方也要改變。但是原生小程序并沒有像Vue這種相關的做法。所以我就想自己實現一個全局變量改變,用到這個變量的地方也重新渲染。

微信小程序如何監聽全局變量

開始吧

首先全局變量里肯定要先有這個 red_heart

?
1
2
3
globalData: {
    red_heart:0,
  },

然后要在onLaunch方法里給全局變量加一個Proxy代理。

Proxy很好理解,懂得都懂。

?
1
2
3
4
5
6
7
8
9
10
11
this.globalData = new Proxy(this.globalData, {
      get(target, key){
        return target[key];
      },
      set:(target, key, value)=>{
        if(key === "red_heart"){
          this.globalDep.RedHeartDep.notifuy()
        }
        return Reflect.set(target, key, value);
      }
    });

主要看set方法里面有一個this.globalDep.RedHeartDep.notifuy(),這個是啥。這是我在全局創建的一個Dep,簡稱依賴收集。

代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
globalDep:{
    RedHeartDep:{
      subs:[],
      addSub(watch){
        this.subs.push(watch)
      },
      removeWatch(id){
        this.subs = this.subs.filter((item)=>{
          return item.id != id
        })
      },
      notifuy(){
        setTimeout(()=>{
          this.subs.forEach(w=>w.update())
        },0)
      }
    }
  }

subs是一個數組,用來收集依賴,addSub和removeWatch,notifuy是用來告訴這個東西要去更新了。

那現在還有一個問題,就是這個依賴在哪里添加呢,當然是在用到的地方添加,就是組件創建的時候。

附上組件js全部代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const app = getApp()
Component({
  properties: {
 
  },
  data: {
    red_heart:0
  },
  lifetimes:{
    attached(){
      let watch = {
        id:this.__wxExparserNodeId__,
        update:()=>{
          this.setData({
            red_heart:app.globalData.red_heart
          })
        }
      }
      app.globalDep.RedHeartDep.addSub(watch)
      app.globalData.red_heart = app.globalData.red_heart
    },
    detached(){
      app.globalDep.RedHeartDep.removeWatch(this.__wxExparserNodeId__)
    }
  },
  methods: {
    handClick(){
      app.globalData.red_heart++
      console.log(app.globalData)
    }
  }
})

在attached上添加依賴,在組件銷毀的時候也不要忘記把依賴刪除,這個id是小程序的一個編譯id,直接拿來用了。
害就這樣了就做好啦!

總結

到此這篇關于微信小程序如何監聽全局變量的文章就介紹到這了,更多相關小程序監聽全局內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6942319891911278599

延伸 · 閱讀

精彩推薦
  • js教程uniapp微信小程序:key失效的解決方法

    uniapp微信小程序:key失效的解決方法

    這篇文章主要介紹了uniapp微信小程序:key失效的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    灬都是個謎11142022-01-05
  • js教程詳解js創建對象的幾種方式和對象方法

    詳解js創建對象的幾種方式和對象方法

    這篇文章主要介紹了詳解js創建對象的幾種方式和對象方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    joychenke3782022-01-24
  • js教程JavaScript/TypeScript 實現并發請求控制的示例代碼

    JavaScript/TypeScript 實現并發請求控制的示例代碼

    這篇文章主要介紹了JavaScript/TypeScript 實現并發請求控制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    鳳晴鈴玉3992022-01-04
  • js教程JavaScript數據結構之雙向鏈表

    JavaScript數據結構之雙向鏈表

    這篇文章主要為大家詳細介紹了JavaScript數據結構之雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    希魔王的塔羅牌7882022-02-13
  • js教程利用JS判斷元素是否為數組的方法示例

    利用JS判斷元素是否為數組的方法示例

    這篇文章主要給大家介紹了關于利用JS判斷元素是否為數組的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價...

    Fahrenheitzz10072021-12-29
  • js教程原生Js實現日歷掛件

    原生Js實現日歷掛件

    這篇文章主要為大家詳細介紹了原生Js實現日歷掛件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    清靜清源11962022-02-17
  • js教程js實現簡單放大鏡特效

    js實現簡單放大鏡特效

    這篇文章主要為大家詳細介紹了js實現簡單放大鏡特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一個21歲的老同志9592022-02-13
  • js教程js實現鼠標切換圖片(無定時器)

    js實現鼠標切換圖片(無定時器)

    這篇文章主要為大家詳細介紹了js實現鼠標切換圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    楓思然8172022-01-10
983
主站蜘蛛池模板: 国产亚洲人成网站在线观看 | 中文在线a在线 | 国产中文字幕在线观看 | 中文字幕乱码视频32 | 日韩欧美视频免费观看 | 免费一区二区三区四区 | 色网在线观看 | 中文字幕久久久 | 91av爱爱 | 日本a在线天堂 | 狠狠的日| 欧美在线操 | 91精品国产一区二区三区免费 | 黄视频在线播放 | 欧美国产精品一区二区三区 | 欧美亚洲视频在线观看 | 久草精品在线 | 亚洲一区二区在线播放 | 精品在线一区二区三区 | 欧美日韩免费 | 不卡黄色片 | 天天操,夜夜操 | 中文字幕在线观看精品视频 | 日韩福利一区二区 | 在线观看视频一区 | 免费午夜视频 | 精品视频一区二区三区在线观看 | 日韩精品在线观 | 久久国产精品一区二区三区 | 日韩中文字幕在线视频 | 免费一级特黄3大片视频 | 亚洲国产中文字幕在线 | 黄色一级网站视频 | 精品一区二区三区中文字幕老牛 | 国产美女久久 | 日本中文在线 | 久久99精品国产.久久久久 | 国产一区二区三区四 | 欧美日韩国产精品一区二区 | 偷偷干夜夜拍 | 亚洲精品免费观看 |