zoukankan      html  css  js  c++  java
  • Vuex的学习

    概念:

    vuex是Vue配套的公共数据管理工具,它可以把一些共享的数据,保存到vuex中,方便整个程序中的任何组件直接获取或修改我们的公共数据。

    Vuex是为了保存 组件之间共享数据而诞生的,如果组件之间有要共享的数据,可以直接挂载到Vuex中,而不必要通过 父子组件之间传值了,如果,组件的数据不需要共享,此时,这些不需要共享的私有数据,没有必要放到vuex中:

    只有共享的数据,才有权力放到vuex中,

    组件内部私有的数据,只要放到组件的data中即可。

    props 和data 和 vuex的区别:

    props存放父组件传递过来的数据;

    data存放私有的数据;

    vuex存放共享的数据;

    综上得出:Vuex是一个全局的共享数据存储区域,就相当于一个数据仓库。

    配置vuex的步骤

    1.安装:

     或者是:cnpm i vuex  -S

    2.导入包和注册vuex

     3.new Vuex.store()实例,得到一个数据仓储对象。

     var store=new Vuex.Store({

       state:{   //---可以把state想象成组件中的data,专门用来存储数据的

             count:0,   //如果在组件中,想要访问,store中的数据,只能通过 this.$store.state.名称  来访问

      },

       mutations:{}

     })

     组件中想要访问 state中的count数据:只能通过 this.$store.state.名称  来访问  ,如下:

     想要点击+1:(自增)

     那么这里的 'increment'是怎么来的呢?

    原来:在main.js中:

     注意:这里的第一个参数是固定死了的,是state

    注意:如果组件想要调用 mutations中的方法,只能通过使用  this.$state.commit('方法名')。所以才有 add 方法中的写法。

    这种 调用mutations 方法的格式,和 this.$emit(父组件中的方法名)  相似。

    同理也可通过这样的方式实现自减。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------

    注意:mutations的函数参数列表中,最多支持两个参数,其中参数1:是state状态;参数2:通过commit提交过来的参数。

    如果想多传参数,可以用传递对象的方式:

     那么在 mutations中函数接收时,就用对象接收

     ------------------------------------------------------------------------------------------------------------------------------------------------------------------

     


    // 总结:
    // 1. state中的数据,不能直接修改,如果想要修改,必须通过 mutations
    // 2. 如果组件想要直接 从 state 上获取数据: 需要 this.$store.state.方法名称 (在mutations中的方法名称)
    // 3. 如果 组件,想要修改数据,必须使用 mutations 提供的方法,
    // 需要通过 this.$store.commit('方法的名称', 唯一的一个参数)
    // 4. 如果 store 中 state 上的数据, 在对外提供的时候,需要做一层包装,
    // 那么 ,推荐使用 getters, 如果需要使用 getters ,则用 this.$store.getters.方法名称 (在getters中的方法名称)
  • 相关阅读:
    计算时代之大数据-分类阅读时代
    从语言到库到框架,再到API,再到标记最后到DSL语言
    Angular指令1
    宇宙量子计算理论
    Angular实现瀑布流的库angular-deckgrid
    Markdown会干掉Html吗?
    基于Html5缓存的页面P2P技术可行性探讨
    一个艰难的决定
    CentOS7 安装 MariaDB-10.4.7
    MongoDB-4 GridFS 文件存储
  • 原文地址:https://www.cnblogs.com/hou-yuan-zhen/p/11585825.html
Copyright © 2011-2022 走看看