Vuex教程

什么是Vuex?

vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。

引入Vuex(前提是已经用Vue脚手架工具构建好项目)

1、利用npm包管理工具,进行安装 vuex。在控制命令行中输入下边的命令就可以了。

 npm install vuex --save

2、新建一个store文件夹(这个不是必须的),并在文件夹下新建store.js文件,文件中引入我们的vue和vuex。

import Vue from ‘vue‘;
    import Vuex from ‘vuex‘;

3、使用我们vuex,引入之后用Vue.use进行引用。

Vue.use(Vuex);

通过这三步的操作,vuex就算引用成功了,接下来我们就可以尽情的玩耍了。

4、在main.js 中引入新建的vuex文件(全局引入vuex)

    import storeConfig from ‘./vuex/store‘

5、再然后 , 在实例化 Vue对象时加入 store 对象 :

/* eslint-disable no-new */
new Vue({
    el: ‘#app‘,
    store,
    router,
    template: ‘<App/>‘,
    components: { App }
})

初出茅庐 来个Demo

  前端项目中,例如头部会有 用户名 和 购物车 数量,这两个属性,这两个属性也就是头部是在多个组件中引用的,同时,购物车数量有在多个地方发生改变,添加购物车,购物车数量加减,删除购物车等等

1、在 vuex 中定义两个属性 一个 nickName 一个 cartCount。

const store = new Vuex.Store({
    state: {
        nickName: ‘‘,
        cartCount: 0
    }
});

state 状态只能通过 mutations 改变,改变之后必须通过 commit 去提交改变要不然不会显示(也可以通过 action 提交,比如一步操作必须用这个提交)

定义更新 用户名 这个mutations。同时定义,购物车数量改变的方法。

const store = new Vuex.Store({
    state: {
        nickName: ‘‘,
        cartCount: 0
    },
    mutations: {
        updateUserInfor(state, nickName){
            state.nickName = nickName;
        },
        // 接收传过来的 数字 ,在现有的基础上 +=,加购物车就 传1,减就穿 -1,删除就传 (-当前商品的数量)。
        updateCartCount(state, cartCount){
            state.cartCount += cartCount;
        },      // 购物车初始化,查看购物车的数量,上边那个是改变数量,这个只是查看不改变
        initCartCount(state, cartCount){
            state.cartCount = cartCount;
        }
    }
});

2、用export default 封装代码,让外部可以引用。

 export default new Vuex.Store({
        state
    });

3、新建一个vue的模板,位置在components文件夹下,名字叫header.vue。在模板中我们引入我们刚建的store.js文件。

 /**
    * vuex 通过这个计算属性 时时去变化 nickName,nickName在checklogin 的时候去赋值。
    */
    computed: {
        nickName(){
            return this.$store.state.nickName;
        },
        cartCount(){
            return this.$store.state.cartCount;
        }
    },

页面中输出

<li style="color: red" v-if="nickName">{{nickName}},欢迎回来</li>
<span class="cartNum" v-if="nickName && (cartCount>0)">{{cartCount}}</span>

在需要更改 vuex 的状态的地方

例如:调用登录接口,成功之后 接口返回用户名

this.$store.commit("updateUserInfor",res.body.result.userName);

购物车顶部的图标旁边显示购物车数量,这个同样是在登录后调用查看购物车数量,不登录肯定不能知道购物车的数量的

/**
        * 获取购物车数量赋值给 vuex
        */
        getCartCount(){
            this.$http.get(‘/users/getCartCount‘).then((res) => {
                if(res.body.status == 0){
                    this.$store.commit("initCartCount",res.body.result);
                }
            });
        }

删除购物车(传递当前商品的数量)

// 删除购物车时候,通知 vuex 更新数量
                    this.$store.commit("updateCartCount", -this.itemData.productNum);

购物车点击加

this.$store.commit("updateCartCount", 1);

购物车点击减

this.$store.commit("updateCartCount", -1);

vuex 计算属性简写:

例如:在header 的组件中,用户名 和 购物车 数量都需要在这里计算,原本写法是

computed: {
        nickName(){
            return this.$store.state.nickName;
        },
        cartCount(){
            return this.$store.state.cartCount;
        }
    },

vuex 有一套简写的方法,在页面导入 mapState,在需要简写的地方导入

import { mapState } from ‘vuex‘
computed: {
        * mapState 数组里面 填写的参数,就是vuex 要返回的参数,也就是vuex要更新更改的数据
        * 它默认 执行 return this.$store.state.xxxx; xxxx就是数组中我们传入的
        */
        ...mapState([‘nickName‘,‘cartCount‘])
    },

总结;vuex 相当于是把一个变量改为了全局,让我们在所有的地方都能访问到,不管在哪个最近修改了这个属性。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 }
span.s1 { font: 12.0px "Helvetica Neue" }

原文地址:https://www.cnblogs.com/haonanZhang/p/8404401.html

时间: 2024-10-12 08:56:16

Vuex教程的相关文章

最详细的Vuex教程

最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. 引入Vuex(前提是已经用Vue脚手架工具构建好项目) 1.利用npm包管理工具,进行安装 vuex.在控制命令行中输入下边的命令就可以了. npm install vuex --save 要注意的是这里一定要加上 –save,因为你这个包我们在生产环境中是要使用的. 2.新建

Vuex 教程案例:计数器以及列表展示

本案例github:https://github.com/axel10/Vuex_demo-Counter-and-list 本篇教程将以计数器及列表展示两个例子来讲解Vuex的简单用法. 从安装到启动初始页面的过程都直接跳过.注意安装时选择需要路由. 首先,src目录下新建store目录及相应文件,结构如下: index.js文件内容: import Vue from "vue" import Vuex from 'vuex' Vue.use(Vuex); //务必在new Vuex

详细的Vuex教程

什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. 引入Vuex(前提是已经用Vue脚手架工具构建好项目) 1.利用npm包管理工具,进行安装 vuex.在控制命令行中输入下边的命令就可以了. npm install vuex --save 要注意的是这里一定要加上 –save,因为你这个包我们在生产环境中是要使用的. 2.新建一个store文件夹(

vue教程推荐

vue 2.x系列在线交互式教程: vue教程 vue教程全面系统地讲解最新的前端框架Vue.js 2.x,内容涵盖响应式计算机制.指令和组件.动画效果等诸多方面,教程深入浅出,即适合没有Vue.js开发基础的前端初学者学习,也适合具备一定基础的工程师深入学习提高. vuex教程 vuex教程全面系统地讲解最新的前端框架Vuex 2.x,内容涵盖state/mutation等核心概念.状态管理的工作原理.Vuex实践应用等诸多方面,教程深入浅出,即适合没有使用过状态管理库的前端开发人员学习,也适

Vue 实现的音乐项目 music app 知识点总结分享

其他 此应用的全部数据来自 QQ音乐,利用 axios 结合 node.js 代理后端请求抓取 全局通用的应用级状态使用 vuex 集中管理 全局引入 fastclick 库,消除 click 移动浏览器 300ms 延迟 页面是响应式的,适配常见的移动端屏幕,采用 flex 布局 疑难总结 & 小技巧 关于 Vue 知识 & 使用技巧 v-html 可以转义字符,处理特定接口很有用 watch 对象可以观测 属性 的变化 像这种父组件传达子组件的参数通常都是在data()里面定义的,为什

Vue.js 系列教程 4:Vuex

原文:intro-to-vue-4-vuex 译者:nzbin 这是关于 JavaScript 框架 Vue.js 五个教程的第四部分.在这一部分,我们会学习使用 Vuex 进行状态管理.这个系列教程并不是一个完整的用户手册,而是通过基础知识让你快速了解 Vuejs 以及它的用途. 系列文章: 渲染, 指令, 事件 组件, Props, Slots Vue-cli Vuex (你在这!) Animations Vuex 如果你错过了关于组件及 Vue-cli 的部分,在阅读本篇文章之前应该先读读

Vue2.0 探索之路——vuex入门教程和思考

Vuex是什么 首先对于 vuex 是什么,我先引用下官方的解释. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 就我的直观理解 vuex 类似于维护了一个全局的 Map对象.你可以往里存放 key-value .然后所有的state数据操作都方法化,保证操作的可追踪和数据的干净. Vuex应用场景 其实对于vuex的应用场景一开始我有点误区,因为我把它当做了一个从始至终类似于 loc

vuex的简单教程

首先安装vuex npm install vuex --save 然后创建store.js文件里写 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) 最后在main.js里引入store.js文件 在new vue里加入store 原文地址:https://www.cnblogs.com/aSnow/p/10504932.html

vuejs + vuex

vuejs 的数据是双向绑定的,而这些数据只是在父组件中,如果各个组件公用的数据就要通过一个容器去管理起来, vuex是不错的选择, 今天看了下vuex的教程: 总结下遇到的问题: vue-cli 了一个项目 import的时候发现了报错:node的版本太低,升级版本就好了. import { mapState, mapActions, mapGetters, map } from "vuex";//注意大括号. https://github.com/lin-xin/notepad/