vuex

这是一个与vue配套的公共数据管理工具,可以将一些需要共享的数据保存到vuex中,以此方便项目中的任何组件都可以从vuex中得到共享数据。cnpm i vuex -S 装包

读取数据

//在main中导入vuex然后挂载在vue对象上
import Vuex from "vuex"
Vue.use(Vuex)

var store = new Vuex.Store({
    //state:数据存储仓库
    state: {
        txt: "hello"
    }
})
var vm = new Vue({
    el: "#box",      
    store: store 
})

现在可以在项目中的任何可以使用js的文件中访问store

<div id="box">
    {{$store.state.txt}}
</div>

操作数据

虽然可以使用$store.state.txt=xx的方式直接操作数据,但vuex并不建议这样做,更高级的方法是使用vuex的mutations,操作数据的代码方法放在mutations中,然后通过$store调用操作方法处理数据。mutations内的方法最多接收两个参数,第一个固定为state,另一个是自定义参数。

<div class="btn-2" @click="add">test</div>

var store = new Vuex.Store({
    //state:数据存储仓库
    state: {
        txt: "hello"
    },
    //代理执行对数据的操作
    mutations: {
        add(state) {
            state.txt += "worlld";
        }
    }
});

var vm = new Vue({
    el: "#box",      
    store: store,
    methods: {
        add: function () {
            this.$store.commit("add");
        }
    }
})

包装数据

如果需要对数据进行包装处理,可以使用getters,获取数据的时候就不再直接调用$store.state.xx

var store = new Vuex.Store({
    //存储
    state: {
        count: 0
    },
    //操作
    mutations: {
        add: function (state, num) {
            state.count += num;
        },
        remove: function (state, num) {
            state.count -= num;
        }
    },
    //包装,可以对仓储的数据进行包装或计算
    getters: {
        wrapperValue: function (state) {
            return "当前数量" + state.count;
        }
    }
});
//获取包装的数据:$store.getters.wrapperValue

持久化存储

vue路由机制使不需要刷新浏览器地址就可以静态加载组件到客户端页面上显示,而vuex默认的存储机制也只是在不刷新的前提下存储数据,如果向持久化存储数据,则需要使用js原生的对象localStorage,将数据存储在localStorage中,刷新浏览器页面后需要从vuex的store中读取数据,则可以把localStorage的数据放到vuex中。

<template>
    <div>
        <input type="text" ref="input">
        <button @click="add">持久化存储</button>
        {{$store.state.x}}
    </div>
</template>
export default {
    methods: {
        add: function () {
            var x = this.$refs.input.value;
            this.$store.commit("add", x);
        }
    }
};

在main.js中

var x = localStorage.getItem("x") || ""; 
var store = new Vuex.Store({
    state: {
        x: x,//将本地存储库的数据放到vuex的仓储中
    },
    mutations: {
        add: function (state, str) {
            state.x += str;
            localStorage.setItem("x", state.x);
        }         
    }
});

刷新浏览器后数据依然存在

localStorage.removeItem("key") //移除指定的数据
localStorage.clear() //移除所有数据

更多关于localStorage的信息,参考:localStorage使用总结

Javascript - 学习总目录

Javascript - Vue - vuex的更多相关文章

  1. 我的音乐盒子(nodejs7 + koa2 + vue + vuex + vue-router)

    你们知道的,nodejs对jser来说,是个好东西,快快的,自从接触nodejs后,总想弄点东西. 这弄个啥了,一天打开百度音乐盒,哟,自己弄一个如何了,好啊好啊. 后台: nodejs 7 + ko ...

  2. vue vuex vue-rouert后台项目——权限路由(超详细简单版)

    项目地址:vue-simple-template共三个角色:adan barbara carrie 密码全是:123456 adan 拥有 最高权限A 他可以看到 red , yellow 和 blu ...

  3. Vue+Vuex实现自动登录 升级版

    Vue+Vuex实现自动登录 升级版 之前实现的版本在这里:Vue+Vuex实现自动登录       在之前实现的版本中,如果你进行测试,可以看到在浏览器的local Storage中,确实里面有了我 ...

  4. 基于Vue+Vuex+Vue-Router+axios+mint-ui的移动端电商项目

    第一步:安装Node 1.打开NodeJS的官网,下载和自己系统相配的NodeJS的安装程序,包括32位还是64位一定要选择好,否则会出现安装问题. 下载地址:https://nodejs.org/e ...

  5. vue+vuex初入门

    Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 解决问题: 传参的方法对于多层嵌 ...

  6. use vue vuex vue-router, not use webpack

    vue,vuex,vue-router放在一起能做什么?不用webpack之类的打包工具使用他们是否可行?各位道友在初学vue时是否有这样的困惑.因为现代构建前端项目的一般模式是: 安装webapck ...

  7. [ABP开源项目]--vue+vuex+vue-router+EF的权限管理系统

    好久没写文字了,当然大家也不期待嘛,反正看代码就行了. 演示网站 首先说下这个项目吧. 如标题一样是基于VUE+.NET开发的框架,也是群友一直吼吼吼要一个vue版本的ABP框架. 我们先来看看首页吧 ...

  8. 基于Vue + Vuex + Vue-router + Webpack 2.0打造微信界面

    一.项目简介 基于Vue + Vuex + Vue-router + Webpack 2.0打造微信界面,实现了微信聊天.搜索.点赞.通讯录(快速导航).个人中心.模拟对话.朋友圈.设置等功能. 二. ...

  9. vue+vuex+axios+echarts画一个动态更新的中国地图

    一. 生成项目及安装插件 # 安装vue-cli npm install vue-cli -g # 初始化项目 vue init webpack china-map # 切到目录下 cd china- ...

随机推荐

  1. SQL注入:sqli-labs lesson-1 小白详解

    为什么是小白详解?因为我就是小白 SQL注入早有耳闻,今天算是真正打开这个门了,但是想要跨进去应该还是没有那么容易. 在B站上听了40分钟的网课,老实说,他讲的还不错,第一遍听不懂也正常 https: ...

  2. deepin修改数据源升级到deepin15.11桌面版

    参考:https://blog.csdn.net/baidu_41751590/article/details/89064220 1,我修改数据源地址: 换成上海交通大学源地址: http://ftp ...

  3. Leetcode13. 罗马数字转整数Leetcode14. 最长公共前缀Leetcode15. 三数之和Leetcode16. 最接近的三数之和Leetcode17. 电话号码的字母组合

    > 简洁易懂讲清原理,讲不清你来打我~ 输入字符串,输出对应整数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/63802fda72be45eba98d9e4 ...

  4. CRC校验原理

    此文为转载文,原作者博客传送门 CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的.其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数( ...

  5. SpringBoot+Redis 实现消息订阅发布

    什么是 Redis Redis 是一个开源的使用 ANSI C语言编写的内存数据库,它以 key-value 键值对的形式存储数据,高性能,读取速度快,也提供了持久化存储机制. Redis 通常在项目 ...

  6. JAVA web环境搭建(使用Tomcat8整合httpd)

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建Tomcat并整合httpd的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查 ...

  7. 解决VS2017调试卡住的问题

    今天用VS2017调试程序时,程序没有按照预期的那样运行到断点处,并且结束调试时会卡很长时间. 那么解决方法是: 1. [Tools]-->[Options]-->[Debugging]- ...

  8. 【对线面试官】Kafka基础入门

    <对线面试官>系列目前已经连载33篇啦,这是一个讲人话面试系列 [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 &am ...

  9. 前端性能之LightHouse

    "灯塔"(LightHouse)前端性能优化测试工具 (谷歌亲儿子) 一 灯塔v6/v7版是通过几种性能指标及不同权重来进行计分的 前端性能指标主要是根据PerformanceTi ...

  10. 计算机网络笔记Part1 概述

    总目录 1.计算机网络的功能.组成.分类 1.1功能 数据通信 资源共享 分布式处理 提高可靠性 负载均衡 1.2组成部分 硬件 软件 协议 1.3分类 按分布范围 广域网 WAN 城域网 MAN 局 ...