国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
1、自訂元件
1.6、元件和頁(yè)面的區(qū)別
3、數(shù)據(jù)、方法和屬性
4、數(shù)據(jù)監(jiān)聽(tīng)器
5、純數(shù)據(jù)字段
6、組件的生命周期
7、插槽
8、父子組件之間的通信
9、behaviors
10、使用 npm 包
11、全局?jǐn)?shù)據(jù)共享
首頁(yè) 微信小程式 小程式開(kāi)發(fā) 微信小程式基礎(chǔ)加強(qiáng)總結(jié)

微信小程式基礎(chǔ)加強(qiáng)總結(jié)

Oct 13, 2022 pm 02:11 PM
微信小程式

本篇文章為大家?guī)?lái)了關(guān)於微信小程式的相關(guān)問(wèn)題,其中主要介紹了一些基礎(chǔ)內(nèi)容,包括了自訂元件、樣式隔離、資料、方法和屬性等等內(nèi)容,下面一起來(lái)看一下,希望對(duì)大家有幫助。

微信小程式基礎(chǔ)加強(qiáng)總結(jié)

【相關(guān)學(xué)習(xí)推薦:小程式學(xué)習(xí)教學(xué)

1、自訂元件

#1.1、建立元件

  • 在專案的根目錄中,滑鼠右鍵,建立components -> test 資料夾

  • #新建的components -> test 資料夾上,滑鼠右鍵,點(diǎn)選新建Component

  • 鍵入元件的名稱後回車(chē),會(huì)自動(dòng)產(chǎn)生元件對(duì)應(yīng)的4個(gè)文件,後綴名分別為.js、.json、.wxml 和.wxss

#1.2、引用元件

局部引用:元件只能在目前被引用的頁(yè)面內(nèi)使用

#全域引用:元件可以在每個(gè)小程式頁(yè)面中使用

1.3、局部引用元件

  • #在頁(yè)面的.json 設(shè)定檔中引用元件的方式,叫做局部引用。範(fàn)例程式碼如下:

    # 在頁(yè)面的 .json 文件中,引入組件
    {
      "usingComponents": {
        "my-test": "/components/test/test"
      }
    }
    # 在頁(yè)面的 .wxml 文件中,使用組件
    <my-test></my-test>
  • 1.4、全域引用元件

在app.json 全域設(shè)定檔中引用元件的方式,叫做全域引用。範(fàn)例程式碼如下:

# 在 app.json 文件中,引入組件
{
  "usingComponents": {
    "my-test": "/components/test/test"
  }
}
1.5、全域參考VS 局部參考

    根據(jù)元件的使用頻率和範(fàn)圍,來(lái)選擇適當(dāng)?shù)囊梅绞剑?li>

    如果某元件在多個(gè)頁(yè)面中常被用到,建議進(jìn)行全域參考
  • 使用某元件只在特定的頁(yè)面中被用到,建議進(jìn)行局部引用

1.6、元件和頁(yè)面的區(qū)別

從表面來(lái)看,元件和頁(yè)面都是由.js、.json、.wxml 和.wxss 這四個(gè)檔案組成的。但是,元件和頁(yè)面的.js 與.json 檔案有明顯的不同:元件的.json 檔案中需要宣告"component": true 屬性

#元件的.js 檔案中呼叫的是Component() 函數(shù)

#元件的事件處理函數(shù)需要定義到methods 節(jié)點(diǎn)中

2、樣式隔離

2.1、元件樣式隔離

預(yù)設(shè)情況下,自訂元件的樣式只對(duì)目前元件生效,不會(huì)影響元件以外的UI 結(jié)構(gòu)。 防止外界的樣式影響元件內(nèi)部的樣式

防止元件的樣式破壞外界的樣式

2.2、元件樣式隔離的注意點(diǎn)

app.wxss 中的全域樣式對(duì)元件無(wú)效

只有class 選擇器會(huì)有樣式隔離效果,id 選擇器、屬性選擇器、標(biāo)籤選擇器不受樣式隔離影響

###在元件和參考元件的頁(yè)面中建議使用class 選擇器,不要使用id、屬性、標(biāo)籤選擇器############2.3、修改元件的樣式隔離選項(xiàng)############預(yù)設(shè)情況下,自訂元件的樣式隔離特性能夠防止元件內(nèi)外樣式互相干擾的問(wèn)題。但有時(shí),我們希望在外界能夠控制組件內(nèi)部的樣式。此時(shí),可以透過(guò)stylelsolation 修改元件的樣式隔離選項(xiàng),用法如下:###
# 在組件的 .js 文件中新增如下配置
Component({
  options: {
    stylelsolation: &#39;isolated&#39;
  }
})
# 或在組件的 .json 文件中新增如下配置
{
  "stylelsolation": "isolated"
}
#########2.4、stylelsolation 的選用值############|? ? 可選值? ? | 預(yù)設(shè)值| 描述? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-------------------------------------------------- -------------------------------------------------- ----------- | -------------------------------------- -------------------------------- |###

| isolated | 是 | 表示啟用樣式隔離 | 表示啟用樣式隔離,在自定義組件內(nèi)外,使用 class 指定的樣式將不會(huì)互相影響 |

| apply-shared | 否 | 表示頁(yè)面 wxss 樣式將影響到自定義組件,但自定義組件 wxss 中指定的樣式不會(huì)影響頁(yè)面 |

| shared | 否 | 表示頁(yè)面 wxss 樣式將影響到自定義組件,自定義組件 wxss 中指定的樣式也會(huì)影響頁(yè)面和其他設(shè)置了 apply-shared 或 shared 的自定義組件 |

3、數(shù)據(jù)、方法和屬性

3.1、data 數(shù)據(jù)

在小程序組件中,用于組件模板渲染和私有數(shù)據(jù),需要定義到 data 節(jié)點(diǎn)中,示例如下:

Component({
  <!-- 組件的初始數(shù)據(jù) -->
  data: {
    count: 0
  }
})

3.2、methods 數(shù)據(jù)

在小程序組件中,事件處理函數(shù)和自定義方法需要定義到 methods 節(jié)點(diǎn)中,示例代碼如下:

Component({
   <!-- 組件的方法列表 -->
  methods: {
    <!-- 事件處理函數(shù) -->
    addCount() {
      this.setData({count: this.data.count + 1});
      <!-- 通過(guò) this 直接調(diào)用自定義方法 -->
      this._showCount()
    },
    <!-- 自定義方法建議以 _ 開(kāi)頭 -->
    _showCount() {
      wx.showToast({
        title: &#39;count值為:&#39; + this.data.count,
        icon: &#39;none&#39;
      })
    }
  }
})

3.3、properties 屬性

在小程序組件中,properties 是組件的對(duì)外屬性,用來(lái)接收外界傳遞到組件中的數(shù)據(jù),示例代碼如下:

Component({
  <!-- 屬性定義 -->
  properties: {
    <!-- 完整定義屬性的方式 -->
    max: {
      type: Number,
      value: 10
    },
    <!-- 簡(jiǎn)化定義屬性的方式 -->
    max: Number
  }
})

3.4、data 和 properties 的區(qū)別

在小程序的組件中,properties 屬性和 data 數(shù)據(jù)的用法相同,它們都是可讀可寫(xiě)的,只不過(guò):

  • data 更傾向于存儲(chǔ)組件的私有數(shù)據(jù)

  • properties 更傾向于存儲(chǔ)外界傳遞到組件中的數(shù)據(jù)

Component({
  methods: {
    showInfo() {
      <!-- 結(jié)果為 true,證明 data 數(shù)據(jù)和 properties 屬性本質(zhì)上是一樣的,都是可讀可寫(xiě)的 -->
      console.log(this.data === this.properties)
    }
  }
})

3.5、使用 setData 修改 properties 的值

由于 data 數(shù)據(jù)和 properties 屬性在本質(zhì)上沒(méi)有任何區(qū)別,因此 properties 屬性的值也可以用于頁(yè)面渲染,或使用 setData 為 properties 中的屬性重新賦值,示例代碼如下:

# 在組建的 .wxml 文件中使用 properties 屬性的值
<view>max屬性的值為:{{max}}</view>
Component({
  properties: { max: Number },
  methods: {
    addCount() {
      this.setData({ max: this.properties.max + 1 })
    }
  }
})

4、數(shù)據(jù)監(jiān)聽(tīng)器

4.1、什么是數(shù)據(jù)監(jiān)聽(tīng)器

數(shù)據(jù)監(jiān)聽(tīng)器用于監(jiān)聽(tīng)和響應(yīng)任何屬性和數(shù)據(jù)字段的變化,從而執(zhí)行特定的操作。它的作用類(lèi)似于 vue 中的 watch 偵聽(tīng)器。在小程序組件中,數(shù)據(jù)監(jiān)聽(tīng)器的基本語(yǔ)法格式如下:

Component({
  observers: {
    &#39;字段A, 字段B&#39;: function(字段A的心智, 字段B的新值) {
    }
  }
})

4.2、數(shù)據(jù)監(jiān)聽(tīng)器的基本用法

Component({
  data: { n1: 0, n2: 0, sum: 0 },
  methods: {
    addN1() { sthis.setData({ n1: this.data.n1 + 1 })},
    addN2() { sthis.setData({ n2: this.data.n2 + 1 })}
  },
  observers: {
    &#39;n1, n2&#39;: function(n1, n2) {
      this.setData({sum: n1 + n2})
    }
  }
})

4.3、監(jiān)聽(tīng)對(duì)象屬性的變化

# 數(shù)據(jù)監(jiān)聽(tīng)器支持監(jiān)聽(tīng)對(duì)象中單個(gè)或多個(gè)屬性的變化,示例代碼如下:
Component({
  observers: {
    &#39;對(duì)象.屬性A, 對(duì)象.屬性B&#39;: function(屬性A的新值, 屬性B的心智){}
  }
})
# 監(jiān)聽(tīng)對(duì)象中所有屬性的變化
Component({
  observers: {
    &#39;obj.**&#39;: function(obj){}
  }
})

5、純數(shù)據(jù)字段

5.1、什么是純數(shù)據(jù)字段

純數(shù)據(jù)字段指的是那些不用于界面渲染的 data 字段。

應(yīng)用場(chǎng)景:例如有些情況下,某些 data 中的字段既不會(huì)展示在界面上,也不會(huì)傳遞給其他組件,僅僅在當(dāng)前組件內(nèi)部使用。帶有這種特性的 data 字段適合備設(shè)置為儲(chǔ)數(shù)據(jù)字段

好處:純數(shù)據(jù)字段有助于提升頁(yè)面更新的性能

5.2、使用規(guī)則

在 Component 構(gòu)造器的 options 節(jié)點(diǎn)中,指定 pureDataPattern 為一個(gè)正則表達(dá)式,字段名符合這個(gè)正則表達(dá)式的字段將成為純數(shù)據(jù)字段,示例代碼如下:

Component({
  options: {
    <!-- 指定所有 _ 開(kāi)頭的數(shù)據(jù)字段為純數(shù)據(jù)字段 -->
    pureDataPattern: /^_/
  },
  data: {
    a: true, // 普通數(shù)據(jù)字段
    _b: true // 純數(shù)據(jù)字段
  }
})

6、組件的生命周期

6.1、組件的全部生命周期函數(shù)

微信小程式基礎(chǔ)加強(qiáng)總結(jié)

6.2、組件主要的生命周期函數(shù)

在小程序組件中,最重要的生命周期函數(shù)有 3 個(gè),分別是 created、attached、detached。它們各自的特點(diǎn)如下:

  • 組件實(shí)例剛被創(chuàng)建好的時(shí)候,created 生命周期函數(shù)會(huì)被觸發(fā)

此時(shí)還不能調(diào)用 setData

通常在這個(gè)生命周期函數(shù)中,只應(yīng)該用于給組件的 this 添加一些自定義的屬性字段

  • 在組建完全初始化完畢、進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)后,attached 生命周期函數(shù)會(huì)被觸發(fā)

此時(shí),this.data 已被初始化完畢

這個(gè)生命周期很有用,絕大多數(shù)初始化的工作可以在這個(gè)時(shí)機(jī)進(jìn)行

  • 組件離開(kāi)頁(yè)面節(jié)點(diǎn)樹(shù)后,detached 生命周期函數(shù)會(huì)被觸發(fā)

退出一個(gè)頁(yè)面時(shí),會(huì)觸發(fā)頁(yè)面內(nèi)每個(gè)自定義組件的 detached 生命周期函數(shù)

此時(shí)適合做一些清理性質(zhì)的工作

6.3、lifetimes 節(jié)點(diǎn)

在小程序組件中,生命周期函數(shù)可以直接定義在 Component 構(gòu)造器的第一級(jí)參數(shù)中,可以在 lifetimes 字段內(nèi)進(jìn)行聲明(這是推薦的方式,其優(yōu)先級(jí)最高)。示例代碼如下:

Component({
  <!-- 推薦用法 -->
  lifetimes: {
    attached() {}, // 在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行
    detached() {}, // 在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行
  },
  <!-- 以下是舊的定義方式 -->
  attached() {}, // 在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行
  detached() {}, // 在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行
})

6.4、什么是組件所在頁(yè)面的生命周期

有時(shí),自定義組件的行為依賴于頁(yè)面狀態(tài)的變化,此時(shí)就需要用到組件所在頁(yè)面的生命周期

微信小程式基礎(chǔ)加強(qiáng)總結(jié)

6.5、pageLifetimes 節(jié)點(diǎn)

# 組件所在頁(yè)面的生命周期函數(shù),需要定義在 pageLifetimes 節(jié)點(diǎn)中
Component({
  pageLifetimes: {
    show: function() {}, // 頁(yè)面被展示
    hide: function() {}, // 頁(yè)面被隱藏
    resize: function(size) {} // 頁(yè)面尺寸變化
  }
})

7、插槽

7.1、什么是插槽

在自定義組件的 wxml 結(jié)構(gòu)中,可以提供一個(gè) slot 節(jié)點(diǎn)(插槽),用于承載組件使用者提供的 wxml 結(jié)構(gòu)。

7.2、單個(gè)插槽

在小程序中,默認(rèn)每個(gè)自定義組件中只允許使用一個(gè) slot 進(jìn)行占位,這種個(gè)數(shù)上限制叫做單個(gè)插槽

<!-- 組件的封裝者 -->
<view class="wrapper">
  <view>這里是組件的內(nèi)部節(jié)點(diǎn)</view>
  <!-- 對(duì)于不準(zhǔn)確的內(nèi)容,可以使用 slot 進(jìn)行展位 -->
  <slot></slot>
</view>
<!-- 組件的使用者 -->
<component>
  <view>這里是插入到組件slot中的內(nèi)容</view>
</component>

7.3、啟用多個(gè)插槽

在小程序的自定義組件中,需要使用多個(gè) slot 插槽是,可以在組件的 .js 文件中,通過(guò)如下方式進(jìn)行啟用,示例代碼如下:

Component({
  options: {
    multipleSlots: true // 在組件定義時(shí),啟用多個(gè) slot 支持
  }
})

7.4、定義多個(gè)插槽

可以在組件的 .wxml 中使用多個(gè) slot 標(biāo)簽,以不同的 name 來(lái)區(qū)分不同的插槽。示例代碼如下:

<!-- 組件模板 -->
<view class="wrapper">
  <!-- name 為 before 的第一個(gè) slot 插槽 -->
  <slot name="before"></slot>
  <view>這是一段固定的文本內(nèi)容</view>
  <!-- name 為 after 的第二個(gè) slot 插槽 -->
  <slot name="after"></slot>
</view>

7.5、使用多個(gè)插槽

在使用帶有多個(gè)插槽的自定義組件時(shí),需要用 slot 屬性來(lái)將節(jié)點(diǎn)插入到不同的 slot 中。示例代碼如下:

<!-- 引用組件的頁(yè)面模板 -->
<component>
  <!-- 這部分內(nèi)容將被放置在組件 <slot name="before"></slot> 的位置上 -->
  <view slot="before">這里是插入到組件 slot name="before"中的內(nèi)容</view>
  <!-- 這部分內(nèi)容將被放置在組件 <slot name="after"></slot> 的位置上 -->
  <view slot="after">這里是插入到組件 slot name="after"中的內(nèi)容</view>
</component>

8、父子組件之間的通信

8.1、父子組件之間的通信的 3 種方式

屬性綁定

用于父組件向子組件的指定屬性設(shè)置數(shù)據(jù),僅能設(shè)置 JSON 兼容的數(shù)據(jù)

事件綁定

用于子組件向父組件傳遞數(shù)據(jù),可以傳遞任意數(shù)據(jù)

獲取組件實(shí)例

父組件還可以通過(guò) this.selectComponent() 獲取子組件實(shí)例對(duì)象

這樣舊可以直接訪問(wèn)子組件的任意數(shù)據(jù)和方法

8.2、屬性綁定

屬性綁定用于實(shí)現(xiàn)父向子傳值,而且只能傳遞普通類(lèi)型的數(shù)據(jù),無(wú)法將方法傳遞給子組件。父組件的示例代碼如下:

<!-- 父組件的 data 節(jié)點(diǎn) -->
data: {
  count: 0
}
<!-- 父組件的 wxml 結(jié)構(gòu) -->
<my-child count="{{count}}"></my-child>
<!-- 子組件的 properties 節(jié)點(diǎn) -->
properties: {
  count: Number
}
<!-- 子組件的 wxml -->
<view>子組件種,count值為:{{count}}</view>

8.3、事件綁定

事件綁定用于實(shí)現(xiàn)子向父?jìng)髦?,可以傳遞任何類(lèi)型的數(shù)據(jù)。使用步驟如下:

在父組件的 js 中,定義一個(gè)函數(shù),這個(gè)函數(shù)即將通過(guò)自定義事件的形式,傳遞給子組件

<!-- 在父組件定義 syncCount 方法,將來(lái)傳遞給子組件,供子組件進(jìn)行調(diào)用 -->
syncCount() {
  console.log(&#39;syncCount&#39;)
}

在父組件的 wxml 中,通過(guò)自定義事件的形式,將步驟 1 中定義的函數(shù)引用,傳遞給子組件

<!-- 使用bind:自定義事件名稱(推薦:結(jié)構(gòu)清晰) -->
<my-test count="{{count}}" bind:sync="syncCount"></my-test>
<!-- 使用bind后面直接協(xié)商自定義事件名稱-->
<my-test count="{{count}}" bindsync="syncCount"></my-test>

在子組件的 js 中,通過(guò)調(diào)用 this.triggerEvent('自定義事件名稱',{參數(shù)對(duì)象}),將數(shù)據(jù)發(fā)送到父組件

<!-- 子組件的 wxml 結(jié)構(gòu) -->
<text>子組件中,count:{{count}}</text>
<button type="primary" bindtap="addCount">+1</button>
# 子組件的 js 代碼
methods: {
  addCount() {
    this.setData({
      count: this.properties.count + 1
    })
    this.triggerEvent(&#39;sync&#39;, { value: this.properties.count })
  }
}

在父組件的 js 中,通過(guò) e.detail 獲取到子組件傳遞過(guò)來(lái)的數(shù)據(jù)

syncCount(e) {
  this.setData({
    count: e.detail.value
  })
}

8.4、獲取組件實(shí)例

可在父組件里調(diào)用 this.selectComponent('id 或 class 選擇器'),獲取子組件的實(shí)例對(duì)象,從而直接訪問(wèn)子組件的任意數(shù)據(jù)和方法。

<my-component count="{{count}}" bind:sync="syncCount" class="test" id="test"></my-component>
<button bindtap="getChild">獲取子組件實(shí)例</button>
<!-- 按鈕的 tap 事件處理函數(shù) -->
getChild() {
  <!-- 可以傳遞 id選擇器,也可以傳遞 class 選擇器 -->
  const child = this.selectComponent(&#39;.test&#39;)
  <!-- 調(diào)用子組件的 setData 方法 -->
  child.setData({ count: child.properties.count + 1 })
  <!-- 調(diào)用子組件的 addCount 方法 -->
  child.addCount()
}

9、behaviors

9.1、什么是 behaviors

behaviors 是小程序中,用于實(shí)現(xiàn)組件間代碼共享的特性,類(lèi)似于 Vue.js 中的 mixins

9.2、behaviors 的工作方式

每個(gè) behavior 可以包含一組屬性、數(shù)據(jù)、生命周期函數(shù)和方法。組件引用它時(shí),它的屬性、屬性和方法會(huì)被合并到組件中。

每個(gè)組件可以引用多個(gè) behavior,behavior 也可以引用其它 behavior

9.3、創(chuàng)建 behavior

調(diào)用 Behavior(Object object) 方法即可創(chuàng)建一個(gè)共享的 behavior 實(shí)例對(duì)象,供所有的組件使用

# 調(diào)用 Behavior() 方法,創(chuàng)建實(shí)例對(duì)象
# 并使用 module.exports 將 behavior 實(shí)例對(duì)象共享出去
module.exports = Behavior({
  # 屬性節(jié)點(diǎn)
  properties: {},
  # 私有數(shù)據(jù)節(jié)點(diǎn)
  data: {},
  # 事件處理函數(shù)和自定義方法節(jié)點(diǎn)
  methods: {}
})

9.4、導(dǎo)入并使用 behavior

在組件中,使用 require() 方法導(dǎo)入需要的 behavior,掛載后即可訪問(wèn) behavior 中的數(shù)據(jù)或方法,示例代碼如下:

# 使用 require() 導(dǎo)入需要自定義 behavior 模塊
const myBehavior = require(&#39;my-behavior&#39;)
Component({
  <!-- 將導(dǎo)入的 behavior 實(shí)例對(duì)象,掛載到 behaviors 數(shù)組節(jié)點(diǎn)中即可生效 -->
  behaviors: [myBehavior]
})

9.5、behavior 中所有可用的節(jié)點(diǎn)

微信小程式基礎(chǔ)加強(qiáng)總結(jié)

10、使用 npm 包

10.1、小程序?qū)?npm 的支持與限制

目前,小程序已經(jīng)支持使用 npm 安裝第三方包,從而來(lái)提高小程序的開(kāi)發(fā)效率。但是,在小程序中使用 npm 包有如下 3 個(gè)限制:

  • 不支持依賴于 Node.js 內(nèi)置庫(kù)的包

  • 不支持依賴于瀏覽器內(nèi)置對(duì)象的包

  • 不支持依賴于 C++ 插件的包

10.2、API Promise 化

  • 基于回調(diào)函數(shù)的異步 API 的缺點(diǎn)

默認(rèn)情況下,小程序官方提供的異步 API 都是基于回調(diào)函數(shù)實(shí)現(xiàn)的,例如,網(wǎng)絡(luò)請(qǐng)求的 API 需要按照如下的方式調(diào)用:

wx.request({
  method: &#39;&#39;,
  url: &#39;&#39;,
  data: {},
  success: () => {}
})

缺點(diǎn):容易造成回調(diào)地獄的問(wèn)題,代碼的可讀性、維護(hù)性差

  • 什么是 API Promise 化

API Promise 化,指定是通過(guò)額外的配置,將官方提供的、基于回調(diào)函數(shù)的異步 API,升級(jí)改造為基于 Promise 的異步 API,從而提高代碼的可讀性、維護(hù)性、避免回調(diào)地獄的問(wèn)題

  • 實(shí)現(xiàn) API Promise 化

在小程序中,實(shí)現(xiàn) API Promise 化主要依賴于 minprogram-api-promise 這個(gè)第三方的 npm 包。它的安裝和使用步驟如下:

npm install --save minprogram-api-promise
# 在小程序入口文件中(app.js),只需要調(diào)用一次 promisifyAll() 方法
import { promisifyAll } from &#39;minprogram-api-promise&#39;
const wxp = wx.p = {}
promisifyAll(wx, wxp)
  • 調(diào)用 Promise 化之后的異步 API

# 頁(yè)面的 .wxml 結(jié)構(gòu)
<button bindtap="getInfo">vant按鈕</button>
# 在頁(yè)面的 .js 文件中,定義對(duì)應(yīng)的 tap 事件處理函數(shù)
async getInfo() {
  const { data: res } = await wx.p.request({
    method: &#39;GET&#39;,
    url: &#39;&#39;,
    data: {}
  })
}

11、全局?jǐn)?shù)據(jù)共享

11.1、什么是全局?jǐn)?shù)據(jù)共享

全局?jǐn)?shù)據(jù)共享(又叫做:狀態(tài)管理)是為了解決組件之間數(shù)據(jù)共享的問(wèn)題

開(kāi)發(fā)中常用的數(shù)據(jù)共享方案有:Vuex、Redux、MobX 等

11.2、小程序中的全局?jǐn)?shù)據(jù)共享方案

在小程序中,可使用 mobx-miniprogram 配合 mobx-miniprogram-bindings 實(shí)現(xiàn)全局?jǐn)?shù)據(jù)共享。其中:

  • mobx-miniprogram 用來(lái)創(chuàng)建 Store 實(shí)例對(duì)象

  • mobx-miniprogram-bindings 用來(lái)把 Store 中的共享數(shù)據(jù)或方法,綁定到組件或頁(yè)面中使用

安裝 MobX 相關(guān)的包

# 在項(xiàng)目運(yùn)行如下的命令,安裝MobX相關(guān)的包
npm install --save mobx-miniprogram mobx-miniprogram-bindings

注意:MobX 相關(guān)的包安裝完畢之后,記得刪除 miniprogram_npm 目錄后,重新構(gòu)建 npm

創(chuàng)建 MobX 的 Store 實(shí)例

import { observable, action } from &#39;mobx-miniprogram&#39;
export const store = observable({
  // 數(shù)據(jù)字段
  numA: 1,
  numB: 2,
  //計(jì)算屬性
  get sum() {
    return this.numA + this.numB
  },
  // actions 方法,用來(lái)修改 store 中的數(shù)據(jù)
  updateNumA: action(function(step) {
    this.numA += step
  }),
  updateNumB: action(function(step) {
    this.numB += step
  }),
})

將 Store 中的成員綁定到頁(yè)面中

# 頁(yè)面的 .js 文件
import { createStoreBindings } from &#39;mobx-miniprogram-bindings&#39;
import { store } from &#39;./store&#39;
Page({
  onLoad() {
    this.storeBindings = createStoreBindings(this, {
      store,
      fields: [&#39;numA&#39;, &#39;numB&#39;, &#39;sum&#39;],
      actions: [&#39;updateNumA&#39;]
    })
  },
  <!-- 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面卸載 -->
  onUnload() {
    this.storeBindings.destroyBindings()
  }
})

在頁(yè)面上使用 Store 中的成員

# 頁(yè)面的 .wxml
<view>{{numA}} + {{numB}} = {{sum}}</view>
<van-button type="primary" bindtap="btnHandler" data-step="{{1}}">numA + 1</van-button>
<van-button type="primary" bindtap="btnHandler" data-step="{{-1}}">numA - 1</van-button>
<!-- 按鈕 tap 事件的處理函數(shù) -->
btnHandler(e) {
  this.updateNumA(e.target.dataset.step)
}

將 Store 中的成員綁定到組件中

import { storeBindingsBehavior } from &#39;mobx-miniprogram-bindings&#39;
import { store } from &#39;./store&#39;
Component({
  behaviors: [storeBindingsBehavior],
  storeBindings: {
    store,
    fields: {
      numA: () => store.numA,
      numB: (store) => store.numB,
      sum: &#39;sum&#39;
    },
    actions: {
      updateNumA: &#39;updateNumA&#39;
    }
  }
})

在組件中使用 Store 中的成員

# 組件的 .wxml 結(jié)構(gòu)
<view>{{numA}} + {{numB}} = {{sum}}</view>
<van-button type="primary" bindtap="btnHandler" data-step="{{1}}">numA + 1</van-button>
<van-button type="primary" bindtap="btnHandler" data-step="{{-1}}">numA - 1</van-button>
<!-- 按鈕 tap 事件的處理函數(shù) -->
btnHandler(e) {
  this.updateNumA(e.target.dataset.step)
}

【相關(guān)學(xué)習(xí)推薦:小程序?qū)W習(xí)教程

以上是微信小程式基礎(chǔ)加強(qiáng)總結(jié)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

閒魚(yú)微信小程式正式上線 閒魚(yú)微信小程式正式上線 Feb 10, 2024 pm 10:39 PM

閒魚(yú)官方微信小程式悄悄上線,在小程式中可以發(fā)布閒置與買(mǎi)家/賣(mài)家私訊交流、查看個(gè)人資料及訂單、搜尋物品等,有用好奇閒魚(yú)微信小程式叫什麼,現(xiàn)在快來(lái)看一下。閒魚(yú)微信小程式叫什麼答案:閒魚(yú),閒置交易二手買(mǎi)賣(mài)估價(jià)回收。 1、在小程式中可以發(fā)布閒置、與買(mǎi)家/賣(mài)家私訊交流、查看個(gè)人資料及訂單、搜尋指定物品等功能;2、在小程式的頁(yè)面中有首頁(yè)、附近、發(fā)閒置、訊息、我的5項(xiàng)功能;3、想要使用的話必要要開(kāi)通微信支付才可以購(gòu)買(mǎi);

實(shí)現(xiàn)微信小程式中的圖片濾鏡效果 實(shí)現(xiàn)微信小程式中的圖片濾鏡效果 Nov 21, 2023 pm 06:22 PM

實(shí)現(xiàn)微信小程式中的圖片濾鏡效果隨著社群媒體應(yīng)用程式的流行,人們?cè)絹?lái)越喜歡在照片中應(yīng)用濾鏡效果,以增強(qiáng)照片的藝術(shù)效果和吸引力。在微信小程式中也可以實(shí)現(xiàn)圖片濾鏡效果,為使用者提供更多有趣和創(chuàng)意的照片編輯功能。本文將介紹如何在微信小程式中實(shí)現(xiàn)圖片濾鏡效果,並提供具體的程式碼範(fàn)例。首先,我們需要在微信小程式中使用canvas元件來(lái)載入和編輯圖片。 canvas元件可以在頁(yè)面

實(shí)作微信小程式中的下拉式選單效果 實(shí)作微信小程式中的下拉式選單效果 Nov 21, 2023 pm 03:03 PM

實(shí)現(xiàn)微信小程式中的下拉式選單效果,需要具體程式碼範(fàn)例隨著行動(dòng)互聯(lián)網(wǎng)的普及,微信小程式成為了網(wǎng)路開(kāi)發(fā)的重要一環(huán),越來(lái)越多的人開(kāi)始關(guān)注和使用微信小程式。微信小程式的開(kāi)發(fā)相比傳統(tǒng)的APP開(kāi)發(fā)更加簡(jiǎn)單快捷,但也需要掌握一定的開(kāi)發(fā)技巧。在微信小程式的開(kāi)發(fā)中,下拉式選單是一個(gè)常見(jiàn)的UI元件,實(shí)現(xiàn)了更好的使用者操作體驗(yàn)。本文將詳細(xì)介紹如何在微信小程式中實(shí)現(xiàn)下拉式選單效果,並提供具

閒魚(yú)微信小程式叫什麼 閒魚(yú)微信小程式叫什麼 Feb 27, 2024 pm 01:11 PM

閒魚(yú)官方微信小程式已經(jīng)悄悄上線,它為用戶提供了一個(gè)便捷的平臺(tái),讓你可以輕鬆地發(fā)布和交易閒置物品。在小程式中,你可以與買(mǎi)家或賣(mài)家進(jìn)行私訊交流,查看個(gè)人資料和訂單,以及搜尋你想要的物品。那麼閒魚(yú)在微信小程式中究竟叫什麼呢,這篇教學(xué)攻略將為您詳細(xì)介紹,想要了解的用戶們快來(lái)跟著本文繼續(xù)閱讀吧!閒魚(yú)微信小程式叫什麼答案:閒魚(yú),閒置交易二手買(mǎi)賣(mài)估價(jià)回收。 1、在小程式中可以發(fā)布閒置、與買(mǎi)家/賣(mài)家私訊交流、查看個(gè)人資料及訂單、搜尋指定物品等功能;2、在小程式的頁(yè)面中有首頁(yè)、附近、發(fā)閒置、訊息、我的5項(xiàng)功能;3、

微信小程式實(shí)現(xiàn)圖片上傳功能 微信小程式實(shí)現(xiàn)圖片上傳功能 Nov 21, 2023 am 09:08 AM

微信小程式實(shí)現(xiàn)圖片上傳功能隨著行動(dòng)網(wǎng)路的發(fā)展,微信小程式已經(jīng)成為了人們生活中不可或缺的一部分。微信小程式不僅提供了豐富的應(yīng)用場(chǎng)景,還支援開(kāi)發(fā)者自訂功能,其中包括圖片上傳功能。本文將介紹如何在微信小程式中實(shí)作圖片上傳功能,並提供具體的程式碼範(fàn)例。一、前期準(zhǔn)備工作在開(kāi)始編寫(xiě)程式碼之前,我們需要先下載並安裝微信開(kāi)發(fā)者工具,並註冊(cè)成為微信開(kāi)發(fā)者。同時(shí),也需要了解微信

使用微信小程式實(shí)現(xiàn)輪播圖切換效果 使用微信小程式實(shí)現(xiàn)輪播圖切換效果 Nov 21, 2023 pm 05:59 PM

使用微信小程式實(shí)現(xiàn)輪播圖切換效果微信小程式是一種輕量級(jí)的應(yīng)用程序,具有簡(jiǎn)單、高效的開(kāi)發(fā)和使用特點(diǎn)。在微信小程式中,實(shí)作輪播圖切換效果是常見(jiàn)的需求。本文將介紹如何使用微信小程式實(shí)現(xiàn)輪播圖切換效果,並給出具體的程式碼範(fàn)例。首先,在微信小程式的頁(yè)面檔案中,新增一個(gè)輪播圖元件。例如,可以使用&lt;swiper&gt;標(biāo)籤來(lái)實(shí)現(xiàn)輪播圖的切換效果。在該組件中,可以透過(guò)b

實(shí)現(xiàn)微信小程式中的圖片旋轉(zhuǎn)效果 實(shí)現(xiàn)微信小程式中的圖片旋轉(zhuǎn)效果 Nov 21, 2023 am 08:26 AM

實(shí)現(xiàn)微信小程式中的圖片旋轉(zhuǎn)效果,需要具體程式碼範(fàn)例微信小程式是一種輕量級(jí)的應(yīng)用程序,為用戶提供了豐富的功能和良好的用戶體驗(yàn)。在小程式中,開(kāi)發(fā)者可以利用各種元件和API來(lái)實(shí)現(xiàn)各種效果。其中,圖片旋轉(zhuǎn)效果是一種常見(jiàn)的動(dòng)畫(huà)效果,可以為小程式增添趣味性和視覺(jué)效果。在微信小程式中實(shí)作圖片旋轉(zhuǎn)效果,需要使用小程式提供的動(dòng)畫(huà)API。以下是一個(gè)具體的程式碼範(fàn)例,展示如何在小程

實(shí)作微信小程式中的滑動(dòng)刪除功能 實(shí)作微信小程式中的滑動(dòng)刪除功能 Nov 21, 2023 pm 06:22 PM

實(shí)作微信小程式中的滑動(dòng)刪除功能,需要具體程式碼範(fàn)例隨著微信小程式的流行,開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到一些常見(jiàn)功能的實(shí)作問(wèn)題。其中,滑動(dòng)刪除功能是常見(jiàn)、常用的功能需求。本文將為大家詳細(xì)介紹如何在微信小程式中實(shí)現(xiàn)滑動(dòng)刪除功能,並給出具體的程式碼範(fàn)例。一、需求分析在微信小程式中,滑動(dòng)刪除功能的實(shí)作涉及以下要點(diǎn):列表展示:要顯示可滑動(dòng)刪除的列表,每個(gè)列表項(xiàng)目需要包

See all articles