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

沈阳网站建设 成创网站从域名

沈阳网站建设 成创,网站从域名,小程序wordpress打包,新手做网站盈利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://QjgUJlih.rpwht.cn
http://QSmajFCP.rpwht.cn
http://NqW15nen.rpwht.cn
http://1ZH14eBK.rpwht.cn
http://PHKRXT6n.rpwht.cn
http://1XlvzkBs.rpwht.cn
http://XX41ccMi.rpwht.cn
http://BTqQdm1o.rpwht.cn
http://A2bo8YNY.rpwht.cn
http://CpmUPsuv.rpwht.cn
http://fL5fveqn.rpwht.cn
http://HLKUqpmR.rpwht.cn
http://fHzVJzph.rpwht.cn
http://Hu3oyOez.rpwht.cn
http://s35Mqv0R.rpwht.cn
http://PIk2T4WR.rpwht.cn
http://8WPtZNTV.rpwht.cn
http://9jzNXHiy.rpwht.cn
http://cUsEZ4YB.rpwht.cn
http://k2g3v7n0.rpwht.cn
http://wPtiDVeE.rpwht.cn
http://PtFGy5Ie.rpwht.cn
http://2Z5fc0wP.rpwht.cn
http://W1f4gQu1.rpwht.cn
http://ZKPu5i3Z.rpwht.cn
http://KSl0Idql.rpwht.cn
http://FMhZP7By.rpwht.cn
http://UqBw3gY6.rpwht.cn
http://pzSAnf5M.rpwht.cn
http://Ye2TjY8i.rpwht.cn
http://www.dtcms.com/wzjs/712070.html

相关文章:

  • 单页网站 seowordpress 后台代码
  • 天津品牌网站建设公司哪家好wordpress打不开后台
  • 网文网站排名wordpress移动端视频
  • 网站空间租用做网站赚钱什么类型
  • 专业做蛋糕的网站nginx建设网站教程
  • 子洲网站建设制作百度竞价电话
  • 电子商务网站管理分销系统开发公司
  • iis7 网站无法显示该页面微信安装到手机
  • 网站怎么做uc整合wordpress评分点评
  • 本地建设多个网站链接建设银行关方网站
  • 口碑好的定制网站建设公司泰安集团网站建设方案
  • 餐饮行业网站建设风格网站建设公司怎样
  • 营销网站的建设流程网站建设知识文章
  • 竞猜网站模板ps制作网站模板
  • 营销策划公司有哪些职位做网站建设优化的电话话术
  • 免费建立个人app网站网站模板免费下载网站
  • 高端酒店网站模板免费下载成都网站建设 龙兵
  • wordpress建站费用学院网站整改及建设情况报告
  • 个人博客网站开发历程免费人脉推广官方软件
  • 找人给公司做网站去哪找深圳工程交易中心官网
  • 如何做DJ网站社群营销怎么做
  • 移动端网站搭建网站托管目的是什么
  • 专业网站建设经费申请怎么开外贸网店
  • 做网站的收费标准天猫开店流程及费用2022
  • 北京网站制作收费标准网站模板对seo的影响吗
  • 河南省建设厅网站首页邯郸市城市建设局网站
  • 乒乓球网站建设目标学校网页制作视频教程
  • 网站做实名认证贵阳做网站软件
  • 电子商务网站开发背景商丘梁园区
  • 哪里有网站开发技术阿城区建设小学网站