美文网首页
vuex学习记录

vuex学习记录

作者: Dr丶net | 来源:发表于2019-08-07 15:52 被阅读0次

store/index.js

import Vue from 'vue';
import vuex from 'vuex';
Vue.use(Vuex);
// 创建实例
const store = new vuex.store({
    //组件通过 this.$store.state.count获取
    state:{
      count:1
    },
    //组件通过this.$store.getters.getStateCount获取
    getters:{
      getStateCount:(state)=>state.count+1
    },
    //组件通过this.$store.commit('add' || 'reduce')调用更新
    mutations:{
        add(state){
            state.count = state.count + 1; 
        },
        reduce(state,v){
            state.count = state.count - v; 
        }
    },
    //组件通过 this.$store.dispatch('addFunc' || 'reduceFunc')调用 用途同上述mutations相同
    actions:{//类似于vue中的mothods
        addFunc(context){// 接收一个与store实例具有相同的方法属性的context对象
            context.commit('add');
        },
        reduceFunc(context,v){
            context.commit('reduce',v);//
        }
    }
})

main.js

import Vue from 'vue';
import App from './App';
import router from './router';

import store from './store';

new Vue({
    el:'#app',
    store,
    router,
    component:{ App },
    Template:'<App/>'
})

HelloWorld.vue

<template>

    <div>
        <h1>我是从state直接获取的{{this.$store.state.count}}</h1>
        <h1>我是从getters直接获取的计算后的{{this.$store.getters.getStateCount}}</h1>

        <button @click="add">+</button>
        <button @click="reduce">-</button>
    </div>

</template>

<script>
    export default {
        name:'helloWorld',
        data(){

        },
        methods:{
            add(){
                //this.$store.commit('add');
                this.$store.dispatch('addFunc')
            },
            reduce(){
                //this.$store.commit('reduce');
                this.$store.dispatch('reduceFunc',4)

            }
        }
    }
</script>

每个属性描述

State vuex中的数据源,我们需要保存的数据就保存在这里,可以在页面通过 this.$store.state来获取我们定义的数据;

Getters 相当于vue中的computed计算属性,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算,这里我们可以通过定义vuex的Getter来获取,Getters 可以用于监听、state中的值的变化,返回计算后的结果。

Mutations:数据我们在页面是获取到了,但是如果我们需要修改count值怎么办?如果需要修改store中的值唯一的方法就是提交mutation来修改,我们现在HelloWorld.vue文件中添加两个按钮,一个加1,一个减1;这里我们点击按钮调用addFun(执行加的方法)和reduceFun(执行减法的方法),然后在里面直接提交mutations中的方法修改值

Actions:我们看到,当点击三次后页面上的值是改变了;我们达到了修改store中状态值的目的,但是,官方并不推荐我们这样直接去修改store里面的值,而是让我们去提交一个actions,在actions中提交mutation再去修改状态值,接下来我们修改index.js文件,先定义actions提交mutation的函数

相关文章

  • Vuex 的学习过程记录

    Vuex 的学习记录 资料参考网址Vuex中文官网Vuex项目结构示例 -- 购物车Vuex 通俗版教程Nuxt....

  • Vuex 学习记录

    vuex 是一个专门为 vue.js 应用程序开发的状态管理系统,其功能是将多个组件共享的状态提取出来,然后采用集...

  • Vuex学习记录

    在vue项目中,常常会遇到状态管理的问题。 比如子组件的某一状态的改变会影响到父组件,这时,我们可以运用this....

  • vuex学习记录

    store/index.js main.js HelloWorld.vue 每个属性描述 State vuex中的...

  • vuex快速入门

    本文为课程 vuex深入浅出 的学习总结与记录;同时参照了vuex官方文档。文中demo的代码可参考:我的码云 一...

  • vuex记录

    前言 官方文档讲vuex讲的很清楚了,本文用于总结vuex的简单使用 简介 Vuex 是一个专为 Vue.js 应...

  • Vue-学习总结(一)-vuex

    在学习vuex之前,我们要思考这些问题:什么是vuex?为什么使用vuex?怎么使用vuex?伴随着这些问题我们来...

  • Vuex 学习笔记

    前言 学习vuex之前,我提出了3个疑问。Vuex 官网 vuex 是什么?官方文档解释:vuex 是一个专为 V...

  • vuex状态管理的学习

    学习vuex首先要在vue的项目中安装vuexcnpm i vuex -S引入vuex 并注册import Vue...

  • Vuex

    今天在博客项目中用到了vuex,记录下vuex 的使用方法。Vuex 是一个专为 Vue.js 应用程序开发的状态...

网友评论

      本文标题:vuex学习记录

      本文链接:https://www.haomeiwen.com/subject/zqzodctx.html