zoukankan      html  css  js  c++  java
  • vuex详解

    一、src目录下面新建一个vuex文件夹

    二、vuex文件夹新建一个store.js文件

    三、安装vuex

    npm install vuex --save

    四、在刚才创建的store.js引入vue 引入vuex并use vuex

    import Vue form 'vue'
    import Vuex form 'vuex'
    Vue.use(Vuex)

    五、定义数据 state

    /* state在vuex中用于存储数据*/
    
    var state={
        count=1,
    }

    六、定义方法 mutations

    mutations 里面放的是方法,方法主要用于改变state里面的数据
    
    var mutations ={
        inCount(){
            ++state.count;
        }
    }

    七、暴露实例

    const store =new Vuex.Store({
        state,
        mutations
    })
    export default store;

    八、组件里面使用vuex

    1. 引入store
    import store form '../vuex/store.js'
    1. 注册
    export defalut {
        data (){
            return {
                msg:'eeee'
            }
        },
        store,
        methods:{
            inCount(){
                //改变 vuex store里面的数据
                this.$store.commint('inCount'); //触发state里面的数据
            }
        }
    }

    3.获取state里面的数据

    this.$store.state.数据

    4.触发mutations 改变state里面的数据

    this.$store.state.commit('inCount');

    getters

    类似计算属性。改变state里面的count数据的时候会触发getters里面的方法,获取新的值

    getters:{
        doneTodoCount:(state,getters) =>{
            return getters.doneTodos.length
        }
    }

    store.js配置

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex);
    
    
    /*1.state在vuex中用于存储数据*/
    var state={
    
        count:1,
        list:[]
    }
    
    /*2.mutations里面放的是方法,方法主要用于改变state里面的数据
    */
    var mutations={
    
        incCount(){
    
            ++state.count;
        },
        addList(state,data){
    
            state.list = data;
        }
    }
    
    /*3、优点类似计算属性 ,  改变state里面的count数据的时候会触发 getters里面的方法 获取新的值 (基本用不到)*/
    
    
    var getters= {
       
        computedCount: (state) => {
            return state.count*2
        }
    }
    
    
    
    
    4. action
    
    Action 类似于 mutation,不同在于:
    
    Action 提交的是 mutation,而不是直接变更状态。
    Action 可以包含任意异步操作。
    actions不能直接修改全局变量,需要调用commit方法来触发mutation中的方法
    */
    
    
    var actions= {
        incMutationsCount(context) {    /*因此你可以调用 context.commit 提交一个 mutation*/
          
          
            context.commit('incCount');    /*执行 mutations 里面的incCount方法 改变state里面的数据*/
    
    
        }
    }
    
    
    
    //vuex  实例化 Vuex.store   注意暴露
    const store = new Vuex.Store({
        state,
        mutations,
        getters,
        actions
    })
    
    
    export default store;

    vuex中的getters和组件内computed很相似。那什么时候用vuex呢?

    • 如果数据还有其他组件复用
    • 需要跨多级组件传递数据
    • 持久化的数据(如登录后用户的信息)
    • 跟当前业务组件强相关的数据,可以放在组件内
  • 相关阅读:
    Linux 压缩,解压
    Angular 修改子组件的样式
    vue项目-各类卡顿问题记录
    老vue项目webpack3升级到webpack5全过程记录(二)
    老vue项目webpack3升级到webpack5全过程记录(一)
    eslint配置汇总
    cke点击时初始化编辑器后光标恢复的方法
    使用 SVG transform rotate 解决画框中的数字跟随旋转的问题
    关于 Selection(getSelection ) 对象的一些常规用法集锦
    markdown 的使用技巧
  • 原文地址:https://www.cnblogs.com/xiaolucky/p/12625061.html
Copyright © 2011-2022 走看看