weex里Vuex state使用storage持久化详解


Posted in Javascript onSeptember 09, 2017

在weex里使用Vuex作为state管理工具,问题来了,如何使得state可以持久化呢?weex官方提供store模块,因此我们可以尝试使用该模块来持久化state。

先看下该模块介绍:

storage 是一个在前端比较常用的模块,可以对本地数据进行存储、修改、删除,并且该数据是永久保存的,除非手动清除或者代码清除。但是,storage 模块有一个限制就是浏览器端(H5)只能存储小于5M的数据,因为在 H5/Web 端的实现是采用 HTML5 LocalStorage API。而 Android 和 iOS 这块是没什么限制的。

首先,引入模块:

const storage = weex.requireModule('storage')

定义state

var state = {

  banner:[],

  activeTabIndex:0,

  lists: {

    searchList:[],

    tabColumns: {

      new:[],

      hot:[],

      select:[]

    },

    items:[]

  }

}

初始化时,从storage加载state数据 

// 从storage里加载数据

storage.getItem(STORAGE_KEY, event => {

 if (event.result == "success" && event.data){

   // 这里可以使用extend等方法,这里仅举例说明

   var data = JSON.parse(event.data);

   state.banner = data.banner;

   state.activeTabIndex = data.activeTabIndex;

 }

})

关键来了,如何存储?Vuex提供了插件机制,我们可以通过插件订阅state的每一次更改,在更改的时候保存我们感兴趣的就OK了

// 存储plugin,存储感兴趣的数据,store里数据太多,没必要全持久化

const storagePlugin = store => {

 store.subscribe((mutation, {activeTabIndex,banner}) => {

  storage.setItem(STORAGE_KEY, JSON.stringify({activeTabIndex,banner}),event => {

   console.log('cache success');

  })

 })

}

最后,创建Vuex,大功告成 

const store = new Vuex.Store({

 actions,

 mutations,

 plugins:[storagePlugin],

 

 state: state,

 

 getters: {

  // ids of the items that should be currently displayed based on

  // current list type and current pagination

  activeIds (state) {

   const { activeType, lists, counts } = state

   return activeType ? lists[activeType].slice(0, counts[activeType]) : []

  },

 

  // items that should be currently displayed.

  // this Array may not be fully fetched.

  activeItems (state, getters) {

   return getters.activeIds.map(id => state.items[id]).filter(_ => _)

  }

 }

})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
枚举JavaScript对象的函数
Dec 22 Javascript
js添加table的行和列 具体实现方法
Jul 22 Javascript
javascript确认框的三种使用方法
Dec 17 Javascript
js计算任意值之间随机数的方法
Jan 16 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 Javascript
微信小程序手动添加收货地址省市区联动
May 18 Javascript
Vue2几种常见开局方式详解
Sep 09 #Javascript
使用JS动态显示文本
Sep 09 #Javascript
深入理解ES7的async/await的用法
Sep 09 #Javascript
jQuery事件对象的属性和方法详解
Sep 09 #jQuery
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 #Javascript
React-Native中禁用Navigator手势返回的示例代码
Sep 09 #Javascript
js实现音乐播放控制条
Sep 09 #Javascript
You might like
php单件模式结合命令链模式使用说明
2008/09/07 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Python中django学习心得
2017/12/06 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
初中重阳节活动总结
2015/05/05 职场文书