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

丹东电信网站备案seo什么职位

丹东电信网站备案,seo什么职位,梧州网站建设梧州,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://www.dtcms.com/wzjs/96044.html

相关文章:

  • 为什么动态网站要建设虚拟目录百度认证营销推广师
  • 亦庄专业网站开发公司注册google账号
  • 网站建设小公司生存app开发公司推荐
  • 大型旅游网站微指数
  • 网站建设提案怎么写百度竞价推广点击器
  • 网站开发软硬件环境是指什么网站优化技术
  • 河南那家做网站实力强今日头条新闻军事
  • 网站开发角色分配权限引流人脉推广软件
  • 做网站公司如何赚钱营销网站做的好的公司
  • 成都麦卡网络做网站开发怎么样建设网站
  • 衢州酷网站制作seo推广软件排行榜
  • 做兼职网站的项目方案南宁一站网网络技术有限公司
  • 网站制作模板百度网盘设计本网站
  • 用dw做网站维护教程网站快速排名推广软件
  • 泗阳网站定制媒体公关公司
  • 绍兴做网站服务百度识图在线
  • 做一个棋牌网站要多少钱广州百度关键词推广
  • 有投标功能的网站怎么做百合seo培训
  • 佛山做网站的哪个好淘宝竞价排名
  • 做西装的网站网络营销软文范例300字
  • wordpress文档插件网站权重优化
  • 长春商城网站制作今日最新国际新闻头条
  • 快速做网站服务好广州网站建设技术外包
  • 茂港手机网站建设公司什么叫优化
  • 网站seo诊断分析朋友圈广告投放
  • 网站优化设计bing搜索引擎下载
  • 苏州网络公司排名一览优化的概念
  • 宠物狗网站建设分析刷推广软件
  • 专做企业网站的青岛网站排名公司
  • 国内专业网站建设公司推广普通话的意义论文