• vuex


    背景

        vue应用程序开发时,我们经常遇到如何在组件之间传值,父子组件传值可以用prop属性和emit事件来互相传递,但是兄弟组件呢?使用vuex是一种非常简单的方案。

    vuex简介

    vuex是vue的状态管理模式,用于管理状态,所谓状态可理解为data,需要共享传递的data,这些data在vuex内统一管理维护。

    vuex对象

    vuex内有五大对象,如下:

      state:state内定义data,即变量,this.$store.data1。

      mutations:用于修改状态,同步的,定义修改状态的方法,可以理解为java类的set方法,不允许直接操作state内的变量,this.$store.commit(“方法名”,param)。

      actions:与mutations类似,不同的是它异步操作,mutations是同步操作,actions内可以提交mutations,不可以直接修改状态。this.$store.dispatch('actions内的方法',参数)。actions内方法定义有两种,如下:

    const actions = {
        actionsAddCount(context, n = 0) {
            console.log(context)
            return context.commit('mutationsAdd', n)
        },
        actionsReduceCount({ commit }, n = 0) {
            return commit('mutationsReduce', n)
        }
    }

      getters:计算属性,当state内属性变化时重新计算返回属性结果。官方文档解释为store的计算属性。也可以理解为所有组件的计算(computed)属性。

      modules:这个适用于开发大型项目,需要很多不同类的状态分模块时使用的。

    const moduleA = {
      state: { ... },
      mutations: { ... },
      actions: { ... },
      getters: { ... }
    }
    
    const moduleB = {
      state: { ... },
      mutations: { ... },
      actions: { ... }
    }

    如何使用

    //安装vuex依赖,npm install vuex --save
    //新建一个vuex的文件,建立一个vuex.js文件。
    
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(VueX)
    
    const vuex = new VueX.store({
       state:{
         A:0     
       }
       mutations:{
         SET_A(state,n ){
          state.A = n
          state.A += n
        }     
       }
       actions:{
         actionA1({commit},n){
           return commit('SET_A',n)
        }
        actionA2(context,n){
           return commit('SET_A',n)
        }
       }
        getters : {
          getterA(state, n ) {
             return (state.A += n)
          }
        } 
    })
    export default vuex
    //在vue实例内使用即可
    new Vue({
      vuex
    })
  • 相关阅读:
    BT协议分析(1)—1.0协议
    Qt线程(2) QThread中使用WorkObject
    新浪微博的开放平台官方文档太粗略,记:仿大平台来实现
    58同城 骗子太多
    代码实现业务经验(程序员的核心能力)
    gitbash 本地文件提交为一个新的项目 到 gitlab
    Spring 核心容器 IOC
    spring AOP 理解
    java不返回某些字段,包括 null
    CentOS7安装 Redis5 单实例
  • 原文地址:https://www.cnblogs.com/hzozj/p/11167703.html
Copyright © 2020-2023  润新知