zoukankan      html  css  js  c++  java
  • Vue入门四:vuex

    目录:

    1. vuex安装及初始化
    2. vuex核心概念之State
    3. vuex核心概念Mutation
    4. vuex核心概念Action
    5. vuex核心概念Getter

     vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。

    • 1、Vuex安装及初始化

    (1)安装vuex依赖包

    npm install vuex --save

    (2)导入vuex包

    import vuex from 'vuex'
    Vue.use(Vuex)

    (3)创建store对象

    const store=new Vuex.Store({
       //state中存放的就是全局共享的数据
       state:{count:0} ,
       //定义Mutation
       mutations:{
           add(state){
              state.count++            
             },
        addN(state){ 
          state.count +=N
        }  
        },
        //定义Action
        actions:{
            addSync(context){
                setTimeout(()=>{
                    context.commit('add')
                },1000)
            },
            addNSync(context,step){
                setTimeout(()=>{
                    context.commit('add',step)
                },1000)
            } 
        }
        //定义Getter
        getter:{
            showNum:state=>{
                return '当前最新的数量是【'+state.count+'】'
            }   
        }
    })
    

    (4)将store对象挂载到vue实例中

    new Vue({
        el:'#app',
        render:h=>h(app),
        router,
        //将创建的共享数据对象,挂载到Vue实例中
        //所有的组件,就可以直接从store中获取全局的数据了
        store
    })
    • 2、Vuex核心概念State

     State提供唯一的公共数据源,所有共享的数据都需要统一放到Store的State中国进行存储。

    (1)组件访问State中数据的第一种方式:

    this.$store.state.全局数据名称

    (2)组件访问State中数据的第二种方式:

    //1.从vuex中按需导入mapState函数
    import {mapState} from 'vuex'

    通过刚才导入的mapState函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性:

    //2.将全局数据,映射为当前组件的计算属性
    computed:{
     ...mapState(['count'])   
    }
    • 3、Vuex核心概念Mutation

     Mutation用于变更Store中的数据

    ①只能通过mutation变更Store数据,不可以直接操作Store中的数据。

    ②通过这种方式虽然操作起来稍微复杂繁琐一些,但是可以集中监控所有数据的变化。

    (1)触发mutations的第一种方式

    methods:{
        handle(){
        //触发mutations的第一种方式
        this.$store.commit('add')
       this.$store.commit('add',3) } }

    (2)触发mutations的第二种方式

    //1.从vuex中按需导入mapMutations函数
    import {mapMutations} from 'vuex'

    通过刚才导入的mapMutations函数,将需要的mutations函数,映射为当前组件的methods方法:

    methods:{
        ...mapMutations(['add','addN'])
    }
    • 4、Vuex核心概念Action

     Action用于处理异步任务。

    如果通过异步操作变更数据,必须通过Action,而不能使用Action,但是在Action中还是要通过触发Mution的方式间接变更数据。

    (1)触发actions的第一种方式

    methods:{
        handle(){
            this.$store.dispatch('addAsync')
            this.$store.dispatch('addAsync',3)
        }
    }

    (2)触发actions的第二种方式

    //1.从Vuex中按需导入mapActions函数
    import {mapActions} from 'vuex'

    通过刚才导入的mapActions函数,将需要的actions函数,映射为当前组件的methods方法:

    methods:{
        ...mapActions(['addAsync','addNAsync'])
    }
    • 5、Vuex核心概念Getter

     Getter用于对Store中的数据进行加工处理形成新的数据。

    ①Getter可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。

    ②Store中数据发生变化,Getter的数据也会跟着变化。

    (1)使用getter的第一种方式:

    this.$store.getters.名称

    (2)使用getter的第二种方式:

    import {mapGetters} from 'vuex'
    
    computed:{
     ...mapGetters(['showNum'])               
    }

    参考:

    开始|Vuex

     
     
     
     

    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨小小打赏一下吧,如果囊中羞涩,不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
    qq群 微信
  • 相关阅读:
    CentOS7下搭建hadoop2.7.3完全分布式
    在linux命令行利用SecureCRT上传下载文件
    SPDY和HTTP
    哈希表的工作原理
    LVS(Linux Virtual Server)
    Discuz x3 UCenter实现同步登陆原理
    Goroutine(协程)为何能处理大并发?
    缓存与DB数据一致性问题解决的几个思路
    固态硬盘SSD与闪存(Flash Memory)
    堆和栈的区别(转过无数次的文章)
  • 原文地址:https://www.cnblogs.com/hoaprox/p/14422879.html
Copyright © 2011-2022 走看看