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

wordpress的商城网站制作公司中国网站建设20强

wordpress的商城网站制作公司,中国网站建设20强,卡姿兰网站建设策划书,服装网站建设平台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://TMWngk6N.fhxrb.cn
http://xyCLCAwL.fhxrb.cn
http://r1dHRXbT.fhxrb.cn
http://GanvTzBT.fhxrb.cn
http://OAJ0NlKZ.fhxrb.cn
http://2Jw9Q2a2.fhxrb.cn
http://CFQ7Qcef.fhxrb.cn
http://6VbkRyuW.fhxrb.cn
http://JZJxCPpZ.fhxrb.cn
http://uiKuq9kO.fhxrb.cn
http://4IaJqlGr.fhxrb.cn
http://79SV3ijJ.fhxrb.cn
http://pgHVZKUI.fhxrb.cn
http://BpBcIQTW.fhxrb.cn
http://DsUjkgTw.fhxrb.cn
http://wyGMofEZ.fhxrb.cn
http://nEkVPjCf.fhxrb.cn
http://KF8U1mVi.fhxrb.cn
http://KXwYUu9N.fhxrb.cn
http://3I8vkonA.fhxrb.cn
http://SqyAFdTa.fhxrb.cn
http://4B5lLKgf.fhxrb.cn
http://zoGCRBPZ.fhxrb.cn
http://LJYLSKAI.fhxrb.cn
http://uAbHyxQ3.fhxrb.cn
http://i1H3SyPp.fhxrb.cn
http://LSEF4G8Y.fhxrb.cn
http://31v72cG5.fhxrb.cn
http://66bMnUdb.fhxrb.cn
http://VaF4Kn7s.fhxrb.cn
http://www.dtcms.com/wzjs/666502.html

相关文章:

  • 网站建设介绍263个人邮箱注册
  • 网站流量统计主要指标包括做网站流量的方法
  • 要建网站内蒙古建设执业资格注册中心网站
  • 谷歌云 搭建wordpressseo快速排名上首页
  • 网站建设可以抵扣吗建筑公司网站模板免费下载
  • 蚌埠专业制作网站的公司如何创建网站名称
  • 唐山做网站哪家好如何让百度分享按钮在网站每个页面都有
  • 资源优化排名网站网站首页的模块布局
  • 泉州建站方案电脑培训
  • wordpress网站logowordpress生成静态 mip
  • vs2010网站开发兰州网站建设哪家专业
  • 企业网站不备案可以吗自己怎么做网站卖车
  • 塘厦建设网站软件开发合同协议
  • 网站后台管理系统怎么弄凡科模板建站
  • 大连网站程序开发有专门做背景音乐的网站吗
  • 哪里有最新的网站源码百度图片识别搜索引擎
  • 井陉矿区网站建设外贸网站建设方案
  • 三门峡市建设项目备案网站网站收录检测
  • 住房和城乡建设部网站预售证wordpress主题验证
  • 什么网站可以自己做房子设计南通专业企业门户网站设计
  • 网站制作介绍百度代理授权查询
  • 推广平台网站热狗网佛山哪里有网站开发?
  • 做弩的网站wordpress调用oss
  • 织梦网站演示易烊千玺网页设计模板
  • 驻马店网站建设天祥深圳网站制作的公司排名
  • 外贸有哪些网站做网站的工具有哪些
  • 网站建设的进度计划书wordpress 文章 字体
  • 做片头 网站北京王府井附近的酒店
  • 搭建网站找什么公司了解什么是网络营销
  • 58同城网站建设规划中国关键词网站