vuex有什么用?
时间:2022-02-11 17:40
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中添加代码如下: 然后在Addition.vue中给按钮添加事件代码如下: 使用mutations的第二种方式: 如下: (3)Action:在mutations中不能编写异步的代码,会导致vue调试器的显示出错。在vuex中我们可以使用Action来执行异步操作。 打开store.js文件,修改Action,如下: 然后在Addition.vue中给按钮添加事件代码如下: (4)Getter:用于对Store中的数据进行加工处理形成新的数据。 它只会包装Store中保存的数据,并不会修改Store中保存的数据,当Store中的数据发生变化时,Getter生成的内容也会随之变化。 然后打开Addition.vue中,添加插值表达式使用getters 也可以在Addition.vue中,导入mapGetters,并将之映射为计算属性 相关推荐: 2020年前端vue面试题大汇总(附答案) vue教程推荐:2020最新的5个vue.js视频教程精选 更多编程相关知识,请访问:编程教学!! 以上就是vuex有什么用?的详细内容,更多请关注gxlsystem.com其它相关文章!mutations: {
add(state,step){
//第一个形参永远都是state也就是$state对象
//第二个形参是调用add时传递的参数
state.count+=step;
}
}
<button @click="Add">+1</button>
methods:{
Add(){
//使用commit函数调用mutations中的对应函数,
//第一个参数就是我们要调用的mutations中的函数名
//第二个参数就是传递给add函数的参数
this.$store.commit('add',10)
}
}
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'])
}
}
操作步骤如下:actions: {
addAsync(context,step){
setTimeout(()=>{
context.commit('add',step);
},2000)
}
}
<button @click="AddAsync">...+1</button>
methods:{
AddAsync(){
this.$store.dispatch('addAsync',5)
}
}
打开store.js文件,添加getters,如下:export default new Vuex.Store({
.......
getters:{
//添加了一个showNum的属性
showNum : state =>{
return '最新的count值为:'+state.count;
}
}
})
<h3>{{$store.getters.showNum}}</h3>
import { mapGetters } from 'vuex'
computed:{
...mapGetters(['showNum'])
}