Vuex的热更替如何实现


Posted in Javascript onJune 05, 2020

前言

我们在使用Vuex的时候,会时不时的更改Vuex内的数据,但是页面不会随之更新,如果数据量大,一个数据依赖另一个数据的话,这样我们要是再刷新页面的话会把以前依赖的数据清空,效率特别低。所以,今天我总结了怎么实现Vuex热更替的功能。

实现

首先,我们这里使用了Vue CLI3。在根目录下的src目录下我们有一个存放Vuex的文件夹叫做store文件夹。首先我们分割成几个模块。

Vuex的热更替如何实现

下面我们把它们分别引入,这里没有分割actions,不过与其他属性同理,这里有不做介绍。下面我们在index.js编辑下面代码:

import Vuex from 'vuex'
// 引入分割的模块
import state from './state/state'
import mutations from './mutations/mutations'
import getters from './getters/getters'

export default ()=>{
// 这里需要赋给一个store变量
 const store = new Vuex.Store({
  state:state,
  mutations:mutations,
  getters:getters
 })
 // 热更新模块
 if(module.hot){
 // 跟上面一样,写入对应的分割模块路径
  module.hot.accept([
   './state/state',
   './mutations/mutations',
   './getters/getters'
  ],()=>{
  // 开启热更替
   const newState = require('./state/state').default
   const newMutations = require('./mutations/mutations').default
   const newGetters = require('./getters/getters').default
   store.hotUpdate({
    state:newState,
    mutations:newMutations,
    getters:newGetters
   })
  })
 }
 
 return store
}

我们还需要在main.js修改:

import Vue from 'vue'
import App from './App.vue'
import Vuex from 'vuex'
import createStore from './store/index.js'

Vue.config.productionTip = false

Vue.use(Vuex)
const store=createStore();

new Vue({
 store,
 render: h => h(App)
}).$mount('#app')

一些其他api

// store.registerModule({ //动态添加模块
// })

// 相当于getter
// store.watch((state)=>state.count+1,(newCount)=>{
//  console.log('new count watched , '+newCount)
// })

// mutation被调用时
// store.subscribe((mutation,state)=>{
//  console.log(mutation.type)
//  console.log(mutation.payload)
// })

// action被调用时
// store.subscribeAction((action,state)=>{
//  console.log(action.type)
//  console.log(action.payload)
// })

结语

以上就完成了Vuex的热更替功能。需要注意的是,直接在state中更改是看不到效果的哦!

到此这篇关于Vuex的热更替如何实现的文章就介绍到这了,更多相关Vuex 热更替内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript 控制弹出窗口
Apr 10 Javascript
往光标所在位置插入值的js代码
Sep 22 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
JavaScript四种调用模式和this示例介绍
Jan 02 Javascript
javascript如何操作HTML下拉列表标签
Aug 20 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
微信小程序实现跑马灯效果
Oct 21 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
js实现GIF图片的分解和合成
Oct 24 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
Jan 12 Javascript
2分钟实现一个Vue实时直播系统的示例代码
Jun 05 #Javascript
Vue 封装防刷新考试倒计时组件的实现
Jun 05 #Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 #Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 #Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 #Javascript
JS删除数组指定值常用方法详解
Jun 04 #Javascript
Vue项目接入Paypal实现示例详解
Jun 04 #Javascript
You might like
域名和cookie问题(域名后缀)
2012/10/10 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
浅析从vue源码看观察者模式
2018/01/29 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
Python 实现简单的客户端认证
2020/07/29 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
车间调度岗位职责
2013/11/30 职场文书
学校万圣节活动方案
2014/02/13 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
检讨书怎么写
2015/01/23 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
MySQL窗口函数的具体使用
2021/11/17 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL