vuex有什么用?


本文摘自PHP中文网,作者青灯夜游,侵删。

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中添加代码如下:

1

2

3

4

5

6

7

mutations: {

    add(state,step){

      //第一个形参永远都是state也就是$state对象

      //第二个形参是调用add时传递的参数

      state.count+=step;

    }

  }

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

1

2

3

4

5

6

7

8

9

10

<button @click="Add">+1</button>

 

methods:{

  Add(){

    //使用commit函数调用mutations中的对应函数,

    //第一个参数就是我们要调用的mutations中的函数名

    //第二个参数就是传递给add函数的参数

    this.$store.commit('add',10)

  }

}

使用mutations的第二种方式:

1

2

import { mapMutations } from ‘vuex’

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

如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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,如下:

1

2

3

4

5

6

7

actions: {

  addAsync(context,step){

    setTimeout(()=>{

      context.commit('add',step);

    },2000)

  }

}

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

1

2

3

4

5

6

7

<button @click="AddAsync">...+1</button>

 

methods:{

  AddAsync(){

    this.$store.dispatch('addAsync',5)

  }

}

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

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

1

2

3

4

5

6

7

8

9

export default new Vuex.Store({

  .......

  getters:{

    //添加了一个showNum的属性

    showNum : state =>{

      return '最新的count值为:'+state.count;

    }

  }

})

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

1

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

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

1

2

3

4

import { mapGetters } from 'vuex'

computed:{

  ...mapGetters(['showNum'])

}

相关推荐:

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

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

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

以上就是vuex有什么用?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

vue 和 react 的优点有哪些

vue项目,访问路径#号的问题详解

vuex中mutations怎么理解?怎么用?

vue前端ui框架有哪些?

vue组件中如何引入css文件

vue脚手架搭建流程

vue计算属性和watch的区别有哪些?

vue.js怎样引入到html中

vue nodejs 什么区别

关于vue使用验证器: veevalidate3

更多相关阅读请进入《vuex》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...