vuex 使用方法

1、安装vuex扩展 : npm install vuex

2、在componets目录下新建 store.js 文件

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

Vue.use(Vuex)

// 定义初始值
const state = {
    num: 0
}

// 获取变量值
const getters = {
    num: state => state.num
}

//定义触发状态对象方法,传入state整个对象
//在页面中触发时使用this.$store.commit(‘mutationName‘) 触发Mutations方法改变state的值
const mutations = {
    plus(state, num) {
        state.num += num;
    },
    minus(state, num) {
        state.num -= num;
    }
}

//异步执行方法,传入参数context,等同于整个store
//处理Mutations中已经写好的方法 在页面中触发方式是 this.$store.dispatch(actionName)
const actions = {
    plus({commit}, num) {
        // 调用mutations 方法
        commit(‘plus‘, num)
    },
    minus({commit}, num) {
        commit(‘minus‘, num)
    }
}

export default new Vuex.Store({
    state,
    mutations,
    actions,
    getters
})

/**
 * 定义多个模块
 * 定义一个模块,引入各个状态对象或方法
 */

// Const moduleA = {
//     state,
//     mutations,
//     getters,
//     actions
// }

/**
 * 引如多个模块
 */
// export default new Vuex.Store ({
//     modules : {
//         a : moduleA     //引入定义模块
//     }
// })

  属性值介绍:

  state:定义初始值

  getters:获取变量值

  mutations: 定义触发状态对象方法,传入state整个对象,在页面中触发时使用this.$store.commit(‘mutationName‘) 触发Mutations方法改变state的值

  actions:异步执行方法,传入参数context,等同于整个store,处理Mutations中已经写好的方法 在页面中触发方式是 this.$store.dispatch(actionName)

3、在main.js 里添加引入store.js 代码

// 引入sotre.js
import store from ‘./components/store.js‘

new Vue({
    store,  // store对象
    el: ‘#app‘,
    router,
    render: h => h(App)
});

4、新建 TestVuex.vue

<template>
    <div class="testVuex">
        <div>{{num}}</div>
        <button @click="plus">加2</button>
        <button @click="minus">加3</button>
    </div>

</template>

<script>

import {mapGetters} from ‘vuex‘

export default {
    name: ‘testVuex‘,
    //computed 实时计算 Vue检测到数据发生变动时就会执行对相应数据有引用的函数。
    computed: {
        ...mapGetters([
            ‘num‘ // store.js 里定义num值
        ])
    },
    methods:{
      // 调用store.js 里actions定义的方法
      plus:function() {
        this.$store.dispatch(‘plus‘, 2);
      },
      minus:function() {
        this.$store.dispatch(‘minus‘, 3);
      }
    },
    data () {
      return {
      }
    }
}

</script>

5、效果预览

  

时间: 2024-10-11 12:22:23

vuex 使用方法的相关文章

vuex使用方法

vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性.比如:我们有几个页面要显示用户名称和用户等级,或者显示用户的地理位置.如果我们不把这些属性设置为状态,那每个页面遇到后,都会到服务器进行查找计算,返回后再显示.在中大型项目中会有很多共用的数据,所以vue给我们提供了vuex. 一,安装及引入vuex 1,安装 npm install vuex --save 2,新建s

使用Vuex的原因其作用与使用方法

一.为什么要使用vuex 1.1 直接举例子直观感受下: 此时我有5个控件1 2 3 4 5 其中 1是3子组件 2是4的子组件 当1要用3的数据时 可以直接传递 同理2用4的数据也可以直接传递,但1和2要用5的生成数据时 那就需要逐层传递, 此时就有点麻烦了,此处只传递2个控件 但设想一下 有10个控件需要传递呢? 1.2 使用场景[状态在组件间共享] 能解决多个界面间的共享问题,统一响应式管理 用户登陆状态,用户.名称.头像.地理位置等 可以保存状态 商品收藏,购物车物品等[可在关闭前统一上

vue http请求 vue-resource使用方法

1.安装vue-resource扩展: npm install vue-resource 2.在main.js中引入 import http from 'vue-resource' 3.使用方法 // 基于全局Vue对象使用http Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback); Vue.http.post('/someUrl', [body], [options]).then(successCa

vue+vuex实现 counter计数器

vue+vuex实现 counter计数器 框架搭建好过后输入npm run dev的时候不会直接打开浏览器,在config文件夹找到index.js文件夹 把autoOpenBrowser: false改为autoOpenBrowser: true,从新在命令行输入npm run dev,这是就会自动打开浏览器. 如图修改 现在做个简单的demo示例:counter(计数器) 一.文件夹与文件的创建 1.首先要在components文件夹下面创建counter的一个文件夹 2.然后在count

Vuex进阶使用之modules模块化划分、mapState、mapActions辅助函数的使用

注解:vuex是一个很简单.很方便的技术,入门很简单,这里给大家详细介绍下vuex的进阶使用. 一.vuex模块化modules 1.项目根目录新建一个sotre文件夹,在store文件夹内,新建两个文件(一个文件,一个文件夹),一个index.js文件,一个modules文件夹. 目录结构: store index.js    --文件 modules   --文件夹 2.store->index.js import Vue from 'vue' import Vuex from 'vuex'

使用 Vuex + Vue.js 构建单页应用

鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] -------------------- 华丽的分割线 -------------------- 原文地址:https://coligo.io/learn-vuex-by-building-notes-app/ 前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 Vuex 来构建一个简单笔记的单页应用

vue全家桶实现笔记本功能

一个通过vue实现的练手小项目,数据保存和导出通过node进行处理 成品截图: 安装vue-cli,webpack: cnpm install webpack -g cnpm install vue-cli -g 通过vue-cli搭建项目: 需要使用vuex管理数据,添加store文件夹,最终目录结构: ----vue_notes |--components |--router |--store 编辑入口文件 main.js //引入Vue import Vue from 'vue' //引入

Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(下篇——多页面VueSSR+热更新Server)

Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(下篇--多页面VueSSR+热更新Server) @(HTML/JS) 这是Vue多页面框架系列文章的第二篇,上一篇(纯前端Vue多页面)中,我们尝试从webpack-simple原型项目改造为一个多页面的Vue项目.而这里,我们继续往前,尝试把Vue多页面改造为Nodejs直出.由于步骤较多,所以本文片幅较长. 本文源代码:https://github.com/kenkozheng/HTML5_research/tr

vue 1.0源代码重点难点分析

vue初始化根组件的入口代码: 对于没有路由的单页应用来说,入口就是new Vue(options),options就是根组件代码,对于有路由的项目来说,入口就是router.start(app),其中app是根组件. function Router() {} // router构造函数var router = new Router(); // new router实例router.start(app); // 项目真正的入口 Router.prototype.start = function