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

    一、状态管理Vuex

      1.Vuex使用

        Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以对应的规则保证状态以一种可预测的方式发生变化。

        

        (1)state:单一状态书,每个应用将仅仅包含一个store实例

            *this.$store.state.状态名字

            *...mapState(['title'])

        (2)getters:可以从store中派生一些状态,getters的返回值会根据它的依赖缓存起来,且只有当它的依赖值发生了改变才会被重新计算

            *可以认为是store的计算属性

            *this.$store.getters.计算属性名字

            *...mapGetters(['getFilms'])

        (3)mutations:更改Vuex的store中的状态的唯一办法就是提交mutation。

            *常量的设计风格

            [SOME_MUTATION](state){  

              //mutate state

            }

            *必须是同步函数

            *this.$store.commit('type','payload')

        (4)actions

          *Action提交的是mutation,而不是直接变更状态。

          *Action可以包含任意异步操作

          *this.$store.dispatch('type','payload')

        (5)模块分割

          

          如果希望你的模块具有更高的封装度和复用性,你可以通过添加namespaced:true的方式使其成为带命名空间的模块。当模块被注册后,它的所有getter、action、及mutation都会自动根据模块注册的路径调整命名。例如:

          

      2.注意

        (1)应用层级的状态应该集中到单个store对象中

        (2)提交mutation是更改状态的唯一办法,并且这个过程是同步的

        (3)异步逻辑都应该封装到action里面

      3.Vue chrome devtools

        这是一个谷歌浏览器的插件,做前端开发的IT工程师应该比较熟悉这款工具,可以边侧边栏窗格中的页面,边检查代码。由于vue是数据驱动的,所以这就存在在开发调试中查看DOM结构并不能解析出什么。但是借助vue-devtools插件,我们就可以很容易的对数据结构进行解析和调试。例如:

        

    二、Vuex在项目中的使用

      1.复杂非父子通信

      2.异步数据快照,可以实现优化

    三、Vuex的数据持久化

      用过vuex的肯定会有这样一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉,因为我们的state都是存储在内存中的。所以我们通过 vuex-persistedstate这个插件,来实现将数据存储到本地。用法很简单:https://github.com/robinvdvleuten/vuex-persistedstate 如图:

      

  • 相关阅读:
    Java 执行
    Java 反射
    Mysql 日常
    Java 引用
    Mysql insert on update
    Java Mail 异常
    HDU_5456_数位dp
    HDU_4734_数位dp
    POJ_1221_DP
    POJ_1050_最大子矩阵
  • 原文地址:https://www.cnblogs.com/qiaowanze/p/12389636.html
Copyright © 2011-2022 走看看