最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序MoxB實現(xiàn)全局狀態(tài)管理流程詳解

 更新時間:2022年11月30日 14:13:07   作者:花鐺  
這篇文章主要介紹了微信小程序使用MoxB實現(xiàn)全局狀態(tài)管理方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

github 地址:https://github.com/wechat-miniprogram/mobx-miniprogram-bindings

安裝 MobX

  • 在小程序根目錄下執(zhí)行 npm install --save mobx-miniprogram mobx-miniprogram-bindings 安裝 mobx-miniprogrammobx-miniprogram-bindings 。
  • 點擊開發(fā)者工具中的菜單欄:工具 --> 構(gòu)建 npm 完成構(gòu)建。

創(chuàng)建 MobX Store

在小程序根目錄下新建 store.js文件,創(chuàng)建 MobX Store。

// store.js
import { observable, action } from "mobx-miniprogram";
export const store = observable({
  // 數(shù)據(jù)字段
  numA: 1,
  numB: 2,
  // 計算屬性
  get sum() {
    return this.numA + this.numB;
  },
  // actions
  updateNumA: action(function () {
    this.numA = 3;
  }),
});

使用 MobX Store

將頁面、自定義組件和 store 綁定有兩種方式: behavior 綁定和手工綁定 。

behavior 綁定:使用 storeBindingsBehavior 這個 behavior 和 storeBindings 定義段。

import { storeBindingsBehavior } from "mobx-miniprogram-bindings";
Component({
  behaviors: [storeBindingsBehavior],
  storeBindings: {
     // 綁定配置
  },
  // 也可以把 storeBindings 設(shè)置為一個數(shù)組,可以同時綁定多個 store
  storeBindings: [
    {
      // 綁定配置 1
    },
    {
      // 綁定配置 2
    },
  ],
})

手工綁定: 使用 createStoreBindings 創(chuàng)建綁定,它會返回一個包含清理函數(shù)的對象用于取消綁定。

在頁面 onUnload 或自定義組件 detached 時一定要調(diào)用清理函數(shù),否則將導致內(nèi)存泄漏。

import { createStoreBindings } from "mobx-miniprogram-bindings";Page({ onLoad() { this.storeBindings = createStoreBindings(this, { // 綁定配置 }); }, onUnload() { this.storeBindings.destroyStoreBindings(); },});import { createStoreBindings } from "mobx-miniprogram-bindings";
Page({
  onLoad() {
    this.storeBindings = createStoreBindings(this, {
      // 綁定配置
    });
  },
  onUnload() {
    this.storeBindings.destroyStoreBindings();
  },
});

無論使用哪種綁定方式,都必須提供一個綁定配置對象。這個對象包含以下字段:

store:一個 MobX observable。用于指定默認的 MobX store。

fields:數(shù)組或?qū)ο蟆S糜谥付ㄐ枰壎ǖ?data 字段。

fields 有三種形式:

  • 數(shù)組形式:指定 data 中哪些字段來源于 store 。例如 ['numA', 'numB']
  • 映射形式:指定 data 中哪些字段來源于 store 以及它們在 store 中對應的名字。例如 { a: 'numA', b: 'numB' } ,此時 this.data.a === store.numA,this.data.b === store.numB 。
  • 函數(shù)形式:指定 data 中每個字段的計算方法。例如 { a: () => store.numA, b: () => anotherStore.numB } ,此時 this.data.a === store.numAthis.data.b === anotherStore.numB。

actions:數(shù)組或?qū)ο?。用于指定需要映射?actions,將 store 中的一些 actions 放入頁面或自定義組件的 this 下。

actions 有兩種形式:

  • 數(shù)組形式:例如 ['update'] ,此時 this.update === store.update。
  • 映射形式:例如 { buttonTap: 'update' } ,此時 this.buttonTap === store.update。

為了提升性能,在 store 中的字段被更新后,并不會立刻同步更新到 this.data 上,而是等到下個 wx.nextTick 調(diào)用時才更新,這樣可以顯著減少 setData 的調(diào)用次數(shù)。

如果需要立刻更新,可以在 behavior 綁定中調(diào)用 this.updateStoreBindings(),或者在手工綁定中調(diào)用 this.storeBindings.updateStoreBindings()。

如果只是更新對象中的一部分,是不會引發(fā)界面變化的。

例如:this.someObject.someField = "xxx"; 是不會觸發(fā)界面更新的,可以改成this.someObject = Object.assign({}, this.someObject, { someField: "xxx" });

在 Component 構(gòu)造器中使用

import { storeBindingsBehavior } from "mobx-miniprogram-bindings";
import { store } from "../../store/store";
Component({
  behaviors: [storeBindingsBehavior],
  storeBindings: {
    store,
    fields: {
      numA: "numA",
      numB: "numB",
      sum: "sum",
    },
    actions: {
      updateNumA: "updateNumA",
    },
  },
  methods: {
    myMethod() {
      this.updateNumA()
      wx.nextTick(() => {
        const A = this.data.numA; // 3
        const B = this.data.numB; // 2
        const C = this.data.sum; // 5
      })
    },
  },
});

在 Page 頁面中使用

小程序基礎(chǔ)庫版本 2.9.2 以上,可以直接像 Component 構(gòu)造器那樣引入 behaviors 。

import { createStoreBindings } from "mobx-miniprogram-bindings";
import { store } from "../../store/store";
Page({
  onLoad() {
    this.storeBindings = createStoreBindings(this, {
      store,
      fields: ["numA", "numB", "sum"],
      actions: ["updateNumA"],
    });
    wx.nextTick(() => {
      const A = this.data.numA; // 1
      const B = this.data.numB; // 2
      const C = this.data.sum; // 3
    })
  },
  onUnload() {
    this.storeBindings.destroyStoreBindings();
  },
  myMethod() {
    this.updateNumA()
    wx.nextTick(() => {
      const A = this.data.numA; // 3
      const B = this.data.numB; // 2
      const C = this.data.sum; // 5
    })
  },
})

到此這篇關(guān)于微信小程序MoxB實現(xiàn)全局狀態(tài)管理流程詳解的文章就介紹到這了,更多相關(guān)小程序MoxB全局狀態(tài)管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 送你43道JS面試題(收藏)

    送你43道JS面試題(收藏)

    這篇文章主要介紹了送你43道JS面試題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 原生JS實現(xiàn)平滑回到頂部組件

    原生JS實現(xiàn)平滑回到頂部組件

    返回頂部組件是一種極其常見的網(wǎng)頁功能,需求簡單:頁面滾動一定距離后,顯示返回頂部的按鈕,點擊該按鈕可以將滾動條滾回至頁面開始的位置,接下來通過本文給大家介紹原生JS實現(xiàn)平滑回到頂部組件,需要的朋友參考下吧
    2016-03-03
  • JavaScript ES6常用基礎(chǔ)知識總結(jié)

    JavaScript ES6常用基礎(chǔ)知識總結(jié)

    ES6中為我們提供了很多好用的新特性,其中包括let,箭頭函數(shù)以及擴展運算符…等,以下就是總結(jié)的常用基礎(chǔ)知識
    2019-02-02
  • javascript深入理解js閉包

    javascript深入理解js閉包

    閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現(xiàn)。
    2010-07-07
  • JS數(shù)字千分位格式化實現(xiàn)方法總結(jié)

    JS數(shù)字千分位格式化實現(xiàn)方法總結(jié)

    這篇文章主要介紹了JS數(shù)字千分位格式化實現(xiàn)方法,結(jié)合實例形式總結(jié)分析了JS實現(xiàn)數(shù)字千分位格式化的常用技巧,包括字符串的分割、拼接、遍歷及正則操作等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • Bootstrap3 多個模態(tài)對話框無法顯示的解決方案

    Bootstrap3 多個模態(tài)對話框無法顯示的解決方案

    這篇文章主要介紹了Bootstrap3 多個模態(tài)對話框無法顯示的解決方案,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • ES6中Symbol、Set和Map用法詳解

    ES6中Symbol、Set和Map用法詳解

    這篇文章主要介紹了ES6中Symbol、Set和Map用法,結(jié)合實例形式詳細分析了ES6中Symbol、Set和Map的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-08-08
  • 特殊情況下如何獲取span里面的值

    特殊情況下如何獲取span里面的值

    有時因某種特殊需要,會獲取span里面的值,下面有個不錯的示例,大家可以參考下
    2014-05-05
  • js實現(xiàn)旋轉(zhuǎn)的星空效果

    js實現(xiàn)旋轉(zhuǎn)的星空效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)旋轉(zhuǎn)的星空效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • JavaScript之通過年月獲取月份的天數(shù)、日期格式化、時間、補零、Date、toLocaleString、Intl、DateTimeFormat、format(問題總結(jié))

    JavaScript之通過年月獲取月份的天數(shù)、日期格式化、時間、補零、Date、toLocaleString、Intl、

    這篇文章主要介紹了JavaScript之通過年月獲取月份的天數(shù)、日期格式化、時間、補零、Date、toLocaleString、Intl、DateTimeFormat、format的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03

最新評論

新闻| 崇左市| 应城市| 秦安县| 汉川市| 卢龙县| 安溪县| 乌海市| 永年县| 定州市| 伊春市| 平度市| 东安县| 永善县| 连云港市| 罗城| 准格尔旗| 平邑县| 高要市| 新绛县| 北京市| 大埔区| 乌什县| 台南市| 绥德县| 南岸区| 新干县| 四子王旗| 商都县| 新龙县| 高青县| 房山区| 仪陇县| 鱼台县| 青岛市| 博野县| 宜宾县| 宁城县| 凤山县| 邢台县| 松溪县|