亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

如何讓微信小程序頁面之間的通信不再變困難

2020-03-21 15:54:36
字體:
來源:轉載
供稿:網友

一個開始

小程序開發者總會碰到各種頁面之間的通信問題,實現方式也五花八門,比如...

場景還原

首先這是一個電商小程序。

有這樣一個需求:

  • 首頁某個地方要展示購物車商品數量。
  • 當我在其他頁面加購了商品,首頁數量刷新。

實現方式

方式一:onShow直接請求接口

Page({ onShow() { // ...一些邏輯  // 后端請求新的購物車數量 this.requestCartNum(); }})

不足: 每次onShow都要請求接口,浪費資源。

方式二:globalData存儲購物車數量,onShow中做刷新  

// 主頁.jsPage({ onShow() {  // 在globalData獲取到購物車數據  let num = globalData.cartNum;  if (num !== this.data.cartNum) {   this.setData({    cartNum: num,   });  } }});// 加購頁.jsPage({ // 加購后改變globalData的值 cartAdd(num) {  globalData.cartNum = globalData.cartNum + num; }})

方式三:加購后獲取首頁實例,調用首頁方法

// 首頁.jsPage({ onCartAdd(num) {  this.setData({   cartNum: this.data.cartNum + num,  }); },});// 加購頁.jsPage({ onCartAdd(num) {  // 加購后獲取到首頁的實例,調用首頁onCartAdd方法  let pages = getCurrentPages();  let curPage = pages[0];  curPage.onCartAdd(num); }})

不足:不確定能不能準確拿到首頁的實例,如果換做其他頁面就很難復用

方法四:事件訂閱與發布

// 首頁.jsPage({ onLoad() {  // 首頁監聽事件  this.$bus.on('cart_add', (num) => {   this.setData({    cartNum: this.data.cartNum + num,   })  }) }})// 加購頁.jsPage({ // 加購成功后觸發cart_add事件 onCartAdd(num) {  this.$bus.emit('cart_add', num); }})

此方法用事件系統,訂閱發布模式去做的處理。

以上幾種方法中最優解決方案是方法四,利用事件的訂閱與發布,邏輯清晰兼容性好。但是都不可避免的不足是:每一個需要動態顯示購物數量的頁面都需要添加相同的邏輯代碼。

狀態管理方案

單頁應用中最常用的就是組件之間的通信,由此誕生了不同的狀態存儲方案: react用redux, vue用vuex。他們的思路都是類似的。都有一個核心 store 存儲著一切要管理的狀態。

那么,其他框架可以,小程序也可以。以redux為例,實現一套簡單的狀態管理方案。

wxdux的實現

使用前提:有redux基礎

wxdux 類似與redux,以action來描述觸發的行為,reducer來描述state的變化。

1. 小程序入口中注冊

注冊store并添加到globalData中去

import {createStore} from './wxdux/index';import reducer from './reducer';const store = createStore(reducer);App({ globalData: {  store, },});

2. reducer實現

寫法與redux類似,功能也類似。

const userReducer = (state = {}, action) => { // ...}const postReducer = (state = [], action) => { // ...};const reducers = { user: userReducer, posts: postReducer,};export default reducers;

3. 頁面中使用wxdux

connect方法會將小程序頁面實例與wxdux連接起來,必須提供$useState方法,該方法接收state,返回該頁面所需要的state

import {connect} from './wxdux/index';Page(connect({ data: {  sex: '男', }, onLoad() {  // ... }, $useState(state) {  return {   name: state.name,  }, },}))

4. wxml中使用name

<view>{{name}}</view>

5. 觸發store更新

使用dispatch方法,該方法接收一個對象作為參數,該對象必須包含type字段表示action的類型,wxdux會根據此action更新state并且刷新所有使用name的視圖

import {dispatch} from './wxdux/index';Page(connect({ // 某點擊事件觸發,更新姓名為“張三” onClick() {  const updateName = {   type: 'update_name',   name: '張三'  };  dispatch(updateName); }}))

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模视频一区二区三区| 成人黄色中文字幕| 欧美自拍视频在线| 26uuu日韩精品一区二区| 久久精品国产亚洲精品2020| 欧美激情视频网| 57pao精品| 日本精品视频在线播放| 欧日韩不卡在线视频| 动漫精品一区二区| 欧美色欧美亚洲高清在线视频| 国产婷婷97碰碰久久人人蜜臀| 中文字幕av一区中文字幕天堂| 欧美亚洲日本网站| 亚洲成年网站在线观看| 九九热精品视频国产| 亚洲欧美日韩中文在线| 国产精品av免费在线观看| 国产精品日韩在线| 亚洲成成品网站| 国产精品人成电影| 国产精品久久国产精品99gif| 国产精品永久在线| 亚洲第一视频网站| 欧美极品第一页| 欧美大片免费观看在线观看网站推荐| 欧美日韩精品在线观看| 美女啪啪无遮挡免费久久网站| 精品国产网站地址| 欧美午夜美女看片| 成人在线小视频| 久久精品亚洲一区| 亚洲国产日韩精品在线| 亚洲97在线观看| 国产z一区二区三区| 国产精品久久99久久| 91亚洲精华国产精华| 国产日韩综合一区二区性色av| 日韩欧美在线国产| 久久久免费观看视频| 亚洲国产高清高潮精品美女| 成人久久一区二区| 国产精品天天狠天天看| 亚洲字幕一区二区| 2019最新中文字幕| 亚洲乱码国产乱码精品精天堂| 国产欧美韩国高清| 日韩av片免费在线观看| 精品福利视频导航| 欧美大学生性色视频| 久久成人亚洲精品| 日韩有码在线电影| 久久视频在线视频| 欧美成aaa人片在线观看蜜臀| 欧美在线欧美在线| 国产成人免费91av在线| 97精品欧美一区二区三区| 色综合久综合久久综合久鬼88| 久久国产精彩视频| 黑人狂躁日本妞一区二区三区| 曰本色欧美视频在线| 日韩美女写真福利在线观看| 久久精品免费电影| 国产91在线高潮白浆在线观看| 亚洲女人天堂视频| 亚洲电影第1页| 日韩成人中文电影| 亚洲曰本av电影| 亚洲成人在线网| 欧美专区在线视频| 久久久久99精品久久久久| 97精品一区二区视频在线观看| 97视频在线观看成人| 国产精品av在线| 日本视频久久久| 亚洲成av人影院在线观看| 精品女同一区二区三区在线播放| 日韩中文字幕在线播放| 日韩性生活视频| 日韩高清电影免费观看完整| 久久久久中文字幕2018| 精品亚洲国产视频| 国产mv久久久| 91国产美女在线观看| 亚洲欧美日本精品| 国内精品伊人久久| 国产精品一区二区女厕厕| 欧美激情性做爰免费视频| 中文字幕亚洲图片| 黄色一区二区在线| 97免费视频在线播放| 国自在线精品视频| 欧美性精品220| 欧美激情精品久久久久久大尺度| 高清视频欧美一级| 国产精品美女午夜av| 亚洲精品福利在线观看| 91久久久久久久久久久久久| 成人免费网视频| 国产在线不卡精品| 亚洲网站在线看| 中文字幕一区日韩电影| 欧美国产一区二区三区| 久久免费少妇高潮久久精品99| 精品一区二区电影| 欧美制服第一页| 成人黄色大片在线免费观看| 亚洲欧美综合精品久久成人| www.欧美精品一二三区| 亚洲毛茸茸少妇高潮呻吟| 国产婷婷成人久久av免费高清| 亚洲毛片在线看| 懂色av一区二区三区| 国产精品亚洲欧美导航| 国产精品pans私拍| 国产一区二区三区丝袜| 亚洲欧美一区二区三区四区| 操人视频在线观看欧美| 免费91麻豆精品国产自产在线观看| 日本成人精品在线| 久久亚洲精品中文字幕冲田杏梨| 成人免费观看a| 亚洲激情在线观看视频免费| 岛国视频午夜一区免费在线观看| 国产精品久久久久免费a∨大胸| 精品一区二区三区电影| 亚洲自拍高清视频网站| 亚洲欧美制服另类日韩| 九九热r在线视频精品| 欧美另类高清videos| 成人有码在线播放| 激情成人在线视频| 亚洲美女免费精品视频在线观看| 国产精品精品久久久久久| 国产69精品久久久久9| 久久夜色精品国产| 日av在线播放中文不卡| 操日韩av在线电影| 国产精品久久久久久亚洲调教| 欧美专区第一页| 欧美激情videos| 亚洲精品小视频| 一区二区三区美女xx视频| 一区二区三区国产视频| 亚洲free嫩bbb| 亚洲精品久久7777777| 久久久久久国产三级电影| 国产精品h片在线播放| 欧美性猛交xxxx乱大交极品| 国产视频精品久久久| 国产精品综合久久久| 亚洲国产欧美自拍| 国产91精品最新在线播放| 欧美精品情趣视频| 日韩av在线免费| www亚洲欧美| 日韩欧美中文字幕在线观看| 久久久天堂国产精品女人| 成人免费网站在线| 麻豆精品精华液| 久久久久久久久久久成人| 亚洲自拍偷拍第一页| 91国产精品视频在线| 国产亚洲一区二区在线|