• 技术文章 >web前端 >Vue.js

    vuex有什么用?

    青灯夜游青灯夜游2020-11-17 15:28:27原创569

    vuex是基于vue框架的一个状态管理库,可以管理复杂应用的数据状态,可以方便的实现组件之间的数据共享,例兄弟组件的通信、多层嵌套的组件的传值等等;它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,是基于vue框架的一个状态管理库。可以管理复杂应用的数据状态,可以方便的实现组件之间的数据共享,比如兄弟组件的通信、多层嵌套的组件的传值等等。

    Vuex采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

    Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

    Vuex中的核心特性

    (1)State: 提供唯一的公共数据源,所有共享的数据都要统一放到Store中的State中存储

    在组件中访问State的方式:

    A.this.$store.state.全局数据名称 如:this.$store.state.count

    B.先按需导入mapState函数: import { mapState } from ‘vuex’

    然后数据映射为计算属性: computed:{ …mapState([‘全局数据名称’]) }

    (2) Mutation:用于修改变更$store中的数

    使用方式:

    打开store.js文件,在mutations中添加代码如下:

    mutations: {
        add(state,step){
          //第一个形参永远都是state也就是$state对象
          //第二个形参是调用add时传递的参数
          state.count+=step;
        }
      }

    然后在Addition.vue中给按钮添加事件代码如下:

    <button @click="Add">+1</button>
    
    methods:{
      Add(){
        //使用commit函数调用mutations中的对应函数,
        //第一个参数就是我们要调用的mutations中的函数名
        //第二个参数就是传递给add函数的参数
        this.$store.commit('add',10)
      }
    }

    使用mutations的第二种方式:

    import { mapMutations } from ‘vuex’
    methods:{…mapMutations([‘add’])}

    如下:

    import { mapState,mapMutations } from 'vuex'
    
    export default {
      data() {
        return {}
      },
      methods:{
          //获得mapMutations映射的sub函数
          ...mapMutations(['sub']),
          //当点击按钮时触发Sub函数
          Sub(){
              //调用sub函数完成对数据的操作
              this.sub(10);
          }
      },
      computed:{
          ...mapState(['count'])
          
      }
    }

    (3)Action:在mutations中不能编写异步的代码,会导致vue调试器的显示出错。在vuex中我们可以使用Action来执行异步操作。
    操作步骤如下:

    打开store.js文件,修改Action,如下:

    actions: {
      addAsync(context,step){
        setTimeout(()=>{
          context.commit('add',step);
        },2000)
      }
    }

    然后在Addition.vue中给按钮添加事件代码如下:

    <button @click="AddAsync">...+1</button>
    
    methods:{
      AddAsync(){
        this.$store.dispatch('addAsync',5)
      }
    }

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

    它只会包装Store中保存的数据,并不会修改Store中保存的数据,当Store中的数据发生变化时,Getter生成的内容也会随之变化。
    打开store.js文件,添加getters,如下:

    export default new Vuex.Store({
      .......
      getters:{
        //添加了一个showNum的属性
        showNum : state =>{
          return '最新的count值为:'+state.count;
        }
      }
    })

    然后打开Addition.vue中,添加插值表达式使用getters

    <h3>{{$store.getters.showNum}}</h3>

    也可以在Addition.vue中,导入mapGetters,并将之映射为计算属性

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

    相关推荐:

    2020年前端vue面试题大汇总(附答案)

    vue教程推荐:2020最新的5个vue.js视频教程精选

    更多编程相关知识,请访问:编程教学!!

    以上就是vuex有什么用?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:vuex vue
    上一篇:vue.js中的el什么意思 下一篇:vue.js有什么特点
    大前端线上培训班

    相关文章推荐

    • vue的父子组件,父子组件传值和vuex的浅析• Vue.js状态管理模式Vuex的安装与使用(代码示例)• Vue基于vuex和axios实现加载效果以及axios的安装配置• 在Vuex中Mutations修改状态操作下详解• Vuex中常用知识点(总结)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网