微信小程序中如何使用store数据共享

 更新时间:2023年04月11日 15:18:46   作者:前端-文龙刚  
全局数据共享 全局数据共享(状态管理)是为了解决组件之间数据共享的问题,开发中常用的全局数据共享方案有:Vuex、Redux、MobX等,这篇文章主要介绍了微信小程序中如何使用store数据共享,需要的朋友可以参考下

全局数据共享 全局数据共享(状态管理)是为了解决组件之间数据共享的问题,开发中常用的全局数据共享方案有:Vuex、Redux、MobX等

在小程序中,可用 mobx-miniprogram (用来创建 Store 实例对象) 配合 mobx-miniprogram-bindings (用来把 Store 中的共享数据或方法,绑定到组件和页面中使用)实现全局数据共享

安装 MobX 相关的包 在项目中运行如下命令,安装 MobX相关的包:(注意要启用管理员权限) 安装完成重新构建 npm

第一步:

npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

安装完成后选择:工具-》构建npm

第二步:

在根目录下创建store文件夹,并在其中创建store.js文件

在这个 JS 文件中,专门来创建 Store 的实例对象

import {observable,action} from 'mobx-miniprogram' 
 
export const store = observable({ //2、创建共享数据,并向外暴露出去
    //定义数据字段
    namesValue:'文龙刚',
    shopCarTotalCount:0,//购物车数量
    sitesPosition:wx.getStorageSync('sitesInfo')||'',//提货点
    RestDay:true,
 
    shopTotalCount:action(function(step){//购物车总数
        console.log('传递过来的值是:',step)
        this.shopCarTotalCount+=step
    }),
    setSitesPosition:action(function(position){//设置提货点
      this.sitesPosition=position
    }),
    getRestDay:action(function(type){
      this.RestDay=!this.RestDay
    })
})

 第三步:将 Store 中的成员绑定到页面中

wxml:

<view>
  <!-- 这是调用参数的方法 -->
  <view>
    namesValue:{{namesValue}}
  </view>
  <!-- 这是调用方法的 -->
  <view>
    购物车数量:{{shopCarTotalCount}}
  </view>
  <view>
    <button bindtap="addShopCarTotalCount" data-step='1'>增加</button>
  </view>
 
  <!-- 更改状态 -->
  <view>
    当前状态:{{RestDay}}
  </view>
  <button bindtap="changeType">更改状态</button>
</view>

JS:

import {createStoreBindings} from 'mobx-miniprogram-bindings'
import {store} from '../../libs/store.js'
//因为我是将store.js文件放在libs中了
Page({
    onLoad(options) {
        //第二步:这是store中参数及方法的导入
        this.storeBindings = createStoreBindings(this, {
            store,
            fields: ['namesValue','shopCarTotalCount', 'RestDay', 'sitesPosition'],
            actions: ['shopTotalCount',  'setSitesPosition','getRestDay'],
        })
  },
 
})

 ---------------------------------将 Store 成员绑定到组件中----------------------------

import {createStoreBindings} from 'mobx-miniprogram-bindings'
import {store} from '../../libs/store.js'
Page({
  behaviors:[storeBindingsBehavior],
  storeBindings:{
    // 数据源
    store, //指定要绑定的store
    fields:{//指定要绑定的字段数据
      numA:()=>store.numA,     //绑定字段的第一种方式
      numB:(store)=>store.numB,//绑定字段的第二种方式
      sum:'sum',               //绑定字段的第三种方式
    },
    actions:{ //指定要绑定的方法
      updateNum2:'updateNum2'
    }
  },
})

---------------------------------在组件中使用 Store 中的成员---------------------------------

//组件的 .wxml结构
<view>{{numA}}+{{numB}}={{sum}}</view>
<van-button type="primary" bindtap="btnHander2" data-step="{{1}}">numB+1</van-button>
<van-button type="danger" bindtap="btnHander2" data-step="{{-1}}">numB-1</van-button>
//组件的 .js结构
methods: {
  btnHander2(e){
    this.updateNum2(e.target.dataset.step)
  }
}

到此这篇关于微信小程序中使用store数据共享的文章就介绍到这了,更多相关小程序store数据共享内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript面向对象之深入了解ES6的class

    JavaScript面向对象之深入了解ES6的class

    class尽管只算是一个语法糖,但它却是语言规范方面的一大成就,也对之前的继承进行了一定的增强,下面这篇文章主要给大家介绍了关于JavaScript面向对象之深入了解ES6的class的相关资料,需要的朋友可以参考下
    2022-03-03
  • 详解JavaScript的流程控制语句

    详解JavaScript的流程控制语句

    这篇文章主要介绍了JavaScript的流程控制语句,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 手机端页面rem宽度自适应脚本

    手机端页面rem宽度自适应脚本

    网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方。重点给大家介绍下rem.有需要的小伙伴可以参考下。
    2015-05-05
  • SWFObject基本用法实例分析

    SWFObject基本用法实例分析

    这篇文章主要介绍了SWFObject基本用法,实例分析了SWFObject操作Flash文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 微信小程序登录时如何获取input框中的内容

    微信小程序登录时如何获取input框中的内容

    这篇文章主要介绍了微信小程序登录时如何获取input框中的内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 原生JS实现的简单小钟表功能示例

    原生JS实现的简单小钟表功能示例

    这篇文章主要介绍了原生JS实现的简单小钟表功能,涉及javascript结合定时器的数值运算与页面元素属性动态修改相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • 微信小程序实现长按 识别图片二维码(两种方案)

    微信小程序实现长按 识别图片二维码(两种方案)

    这篇文章主要介绍了微信小程序实现长按 识别图片二维码(两种方案),第一种方案只需要在image里面加一个属性就可以了,本文结合实例代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • D3.js实现饼状图的方法详解

    D3.js实现饼状图的方法详解

    相信大家都知道图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等。可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和Web应用和项目的可靠性。现在就让我们大家一起来学习用D3.js来实现饼图的方法,有需要的可以参考借鉴。
    2016-09-09
  • JS制作手机端自适应缩放显示

    JS制作手机端自适应缩放显示

    允许网页宽度自动调整的"自适应网页设计"到底是怎么做到的?下面我们就来通过示例来探讨下。
    2015-06-06
  • jQuery插件datepicker 日期连续选择

    jQuery插件datepicker 日期连续选择

    这篇文章主要介绍了jQuery插件datepicker 日期连续选择的方法和示例,有需要的小伙伴可以参考下。
    2015-06-06

最新评论