当前位置: 首页 > wzjs >正文

浙江省国有建设用地出让网站宁波网页设计在宁勤区

浙江省国有建设用地出让网站,宁波网页设计在宁勤区,三星网上商城怎么取消订单,新绛网站建设Vuex Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。(类似于在前端的数据库,这里的数据存储在内存当中) 一、安装并配置 在项目的…

Vuex

Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。(类似于在前端的数据库,这里的数据存储在内存当中)

一、安装并配置

在项目的终端中写入如下的命令来安装Vuex

npm install vuex --save

配置main.js文件,导入Vuex

import Vuex from 'vuex'
Vue.use(Vuex);
  • 它竟然可以存多个组件的状态,当然要进行相应的一个配置,所以此时我们在项目的src目录下创建一个新的目录store,并在内部准备一个配置文件index.js
import Vue from 'Vue'
import Vuex from 'Vuex'Vue.use(Vuex);// 公共state对象,存储所有组件的状态
const state = {user: {name:''}
}// 唯一取值的方法,计算属性 
const getters = {getUser(state) {return state.user;}
}// 唯一可以修改state值的方法,同步阻塞
const mutations = {updateUser(state, user) {state.user = user;}
}// 异步调用mutations方法
const actions = {asyncUpdateUser(user) {// context 是上下文的意思 针对的就是这个 js 文件// 且只能用 commit 进行调用mutations中的方法// 当调用actions中的方法也是只能dispatch进行调用context.commit('updateUser', user);}
}// 现在我们定义完了,此时就要将我们定义的内容暴露出去
export default new Vuex.Store({state,getters,mutations,actions
});

之后在main.js中配置文件,再次引入我们刚刚写好的store目录

import store from './store'

在这里插入图片描述

  • 用户信息的添加和获取

    在这里插入图片描述

在这里插入图片描述

外界通过异步调用的方法,使用dispatch()调用添加,但是本质上还是使用的是mutations中获取信息的方法(唯一修改方法)

二、解决浏览器刷新后Vuex数据消失问题

问题描述

Vuex的状态存储是响应式的,当Vue组件从store中读取状态的时候,若store中的状态发送变化,那么相应的组件也会得到高效的更新,但是有一个问题就是vuex的存储的数据只是在页面中的,相当于我们定义的全局变量,刷新之后,里面的数据就会恢复到初始状态。但是这种情况并不是我们所希望的

解决方案

​ 监听页面是否刷新,如果页面刷新了,将state对象存入到sessionStorage中。页面打开之后,判断sessionStorage中是否存在state对象,如果存在,则说明页面是被刷新过的,将sessionStorage中存的数据取出来给vuex中的state赋值,如果不存在,说明是第一次打开,则取vuex中定义的state初始值

代码实现

因为我们在任何一个组件中进行刷新,我们都需要判断,但是我们不可能每一个组件中都设置判断,所以我们干碎就直接定义为全局的组件,故需要在根组件App.vue中设置监听刷新操作的事件

  • App.vue中添加监听刷新事件

    export default {name: 'App',mounted() {window.addEventListener('unload', this.saveState);},methods: {saveState() {window.sessionStorage.setItem('state', JSON.stringify(this.$store.state))}}
    }
    
  • 修改store/index.js中的state

    const state = null != window.sessionStorage.getItem('state') ? JSON.parse(window.sessionStorage.getItem('state')) : {user: {name: ''}
    }
    

三、模块化

​ 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store对象就可能变得相当臃肿。为了解决以上的问题,Vuex允许我们将store分割成模块(module)。每个模块拥有自己的statemutationactiongetter、甚至是嵌套子模块一一从上至下进行同样方式的分割

  • 创建user模块

    store目录下创建一个名为modules的目录并创建一个名为user.js的文件,代码如下:

    const user = {state : {user: {name:''}
    }// 唯一取值的方法,计算属性 getters : {getUser(state) {return state.user;}
    }// 唯一可以修改state值的方法,同步阻塞mutations : {updateUser(state, user) {state.user = user;}
    }// 异步调用mutations方法actions : {asyncUpdateUser(user) {// context 是上下文的意思 针对的就是这个 js 文件// 且只能用 commit 进行调用mutations中的方法// 当调用actions中的方法也是只能dispatch进行调用context.commit('updateUser', user);}}
    }export default user;
    

    注意:定义的user.js内部仍然是key : value格式的,且最外层拿上const user = {}包裹

  • 修改store/index.js

    import Vue from 'Vue'
    import Vuex from 'Vuex'
    import user from './modules/user'Vue.use(Vuex);// 现在我们定义完了,此时就要将我们定义的内容暴露出去
    export default new Vuex.Store({modules : {user}
    });
    

    由于组件中使用的是gettersactions处理,所以调用代码不变

  • 修改App.vue

    export default {name: 'App',mounted() {window.addEventListener('unload', this.saveState);},methods: {saveState() {window.sessionStorage.setItem('userState', JSON.stringify(this.$store.state.user))}}
    }
    

文章转载自:

http://SAOFBivY.ygqjn.cn
http://pkn1d7YA.ygqjn.cn
http://hCCBlzH8.ygqjn.cn
http://ja9ATsnU.ygqjn.cn
http://1oIeRIB0.ygqjn.cn
http://fQ5Zwvfz.ygqjn.cn
http://zUlJhSda.ygqjn.cn
http://ChNQUJoG.ygqjn.cn
http://NYP1UCYM.ygqjn.cn
http://isUzKLvq.ygqjn.cn
http://odbyTRW9.ygqjn.cn
http://sPABUp4C.ygqjn.cn
http://xO9uawgR.ygqjn.cn
http://mtf82pb8.ygqjn.cn
http://CjB5AI15.ygqjn.cn
http://CeNToAAH.ygqjn.cn
http://YqGI4kpd.ygqjn.cn
http://EfrmTnVC.ygqjn.cn
http://j0kSoMwc.ygqjn.cn
http://CX6GEhfu.ygqjn.cn
http://QTkK1qI2.ygqjn.cn
http://xw7k2O2B.ygqjn.cn
http://OZxbR6dV.ygqjn.cn
http://x2Mpt4JB.ygqjn.cn
http://PpVwdzZ0.ygqjn.cn
http://Q2xtjUZT.ygqjn.cn
http://yajDjwk7.ygqjn.cn
http://QYu1ugX5.ygqjn.cn
http://9qAadO0e.ygqjn.cn
http://lnctru5R.ygqjn.cn
http://www.dtcms.com/wzjs/754926.html

相关文章:

  • 众筹网站建设公司html5网站管理系统
  • 首码项目推广网站网站建设 国鸿
  • 南通网站建设搭建专业电商网站建设
  • 贵阳企业网站排名优化仙侠类网页游戏排行榜
  • 温州网站建设网络找百度公司做网站怎么样
  • 曲靖网站制作上海网站se0优化
  • 网站建设公司的服务定位企业的管理系统有哪些
  • 厦门seo建站本地网站更新不了 vps登陆可以
  • 免费商城网站模板微信公众号登录入口在哪里
  • 电子商务网站规划 分析 设计wordpress的用途
  • 贵阳开发网站注册一个互联网公司需要多少钱
  • 做网站一般会出现的问题找人做ps的网站
  • 用手机如何做网站网站 备案 异地
  • 怎样做网站建设方案机关事业单位网站建设
  • 电子商城官方网站合作社网站模板
  • 考试微网站开发电商详情页模板的网站
  • asp.net答辩做网站服务器win7网站建设
  • 公司做企业网站沈阳网站建设本地化技术服务
  • 怎样免费注册自己网站的域名旅游网站建设开题报告
  • 网站建设设计哪个济南兴田德润简介建筑网格布生产厂家
  • 实验室网站建设的意义最成功的个人网站
  • 教做月嫂的网站有吗深圳专业网站排名公司
  • 安居客网站是用什么程序做的网站开发先找UI吗
  • asp.net网站建设wordpress站点实例
  • 网站建设 教学视频什么是crm管理系统
  • 国外网站模板欣赏wordpress 移动插件
  • 做标签这个网站刷单安全吗哈尔滨建筑业协会网站
  • 公司网站要更新wordpress 卡密注册
  • creo二次开发快速排名优化推广价格
  • 微网站自助建站后台免费装修效果图大全