【VUE前进之路】vueX的使用

作者简介:一名前端萌新,前来进行VUE的前进之路
个人主页:大熊李子的主页🐻

目录

一,vuex状态共享树

1.1什么是Vuex

1.2vuex的优点

1.3什么时候使用vuex

二,Vuex 的基本使用

三、Vuex 的核心概念

1.四个vuex节点

1.1State

1.2Mutation

1.3Action

1.4Getter


一,vuex状态共享树

以前我们进行数据的共享,使用的是自定义事件,自定义属性,eventBus,全局事件总线,pubsub等,以上的方式只能在小范围内进行数据共享,对于大范围以及频繁的数据共享来说,不太使用,尤其是在大型项目中的体验感不佳

1.1什么是Vuex

Vuex是实现组件全局状态(数据)管理的-种机制,可以方便的实现组件之间数据的共享。

1.2vuex的优点

1. 能够在vuex中集中管理共享的数据,易于开发和后期维护
2. 能够高效地实现组件之间的数据共享,提高开发效率
3. 存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

1.3什么时候使用vuex

一般情况下,只有组件之间共享的数据,才有必要存储到vuex中;对于组件中的私有数据,依旧存储在组件自身的data中即可。

二,Vuex 的基本使用

①安装 vuex 依赖

npmi vuex--save

②导入 vuex 包

importVuexfrom'vuex'
Vuex.use(Vuex)

③创建 store 对象

const store=new Vuex.store({
//state中存放的就是全局共享的数据
state:{count:0}
})

④将 store 对象挂载到 vue 实例中

new vue({
el:'#app',
render:h=>h(app),
router,
//将创建的共享数据对象,挂载到Vue实例中
//所有的组件,就可以直接从store中获取全局的数据了
store
})

三、Vuex 的核心概念

1.4个vuex节点

1.1State

State提供唯一的公共数据源,所有共享的数据都要统-放到Store的State中进行存储。

//创建store数据源,提供唯一-公共数据
conststore=newVuex.store({
state:{count:0}
})

组件中使用共享数据的第一种方式

this.$store.state.数据变量名

组件中使用共享数据的第二种方式

1.从vuex中按需导入mapState函数
import{mapState}from'vuex'导入mapState函数

通过刚才导入的mapState函数,将当前组件需要的全局数据,映射为当前组件的computed计算属性

computed:{
...mapState(['变量名'])

}

1.2Mutation

Mutation 用于变更Store中的数据。vuex只能通过mutation变更Store数据,不可以直接操作Store中的数据。通过这种方式虽然操作起来稍微繁琐- -些,但是可以集中监控所有数据的变化。

exportdefaultnewVuex.Store({
state:{
count:0
},
mutations:{//定义mutation
add(state){
state.count++
}
}
})
//组件中使用
methods:{
add(){
//触发mutation
this.$store.commit('add')
}
}

可以在触发mutations时传递参数

export default new Vuex.Store({
state:{
count:0
},
mutations:{
addN(state,step){
//变更状态
state.count+=step
}
}
})
//组件中使用
methods:{
add(){
//触发mutation时携带参数
//commit的作用,就是调用某个mutation函數
this.$store.commit('addN',3)
}
}

mutations第二种使用方式
this. $store.commit() 是触发mutations的第一种方式,触发mutations的第二种方式

//1.从vuex中按需导入mapMutations函数
import{mapMutations}from'vuex'

通过刚才导入的mapMutations函数,将需要的mutations函数,映射为当前组件的methods方法

//2.将指定的mutations函数,映射为当前组件的methods函数
methods:{
...
mapMutations(['sub'])
}

1.3Action

Action用于处理异步任务。如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发Mutation的方式间接变更数据。

export default new Vuex.Store({
state:{
count:0
},
mutations:{
add(state){
state.count++
},
actions:{
addAsync(context){
setTimeout(()=>{
context.commit('add')
},1000)
}
},
})
//组件中使用
methods:{
addAsync(){
这里的dispatch函数,专门用来触发action
this.$store.dispatch('addAsync')
}
}

1.4Getter

Getter用于对Store中的数据进行加工处理形成新的数据。
1. Getter可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。
2. Store中数据发生变化,Getter 的数据也会跟着变化。

定义Getter

export default new Vuex.Store({
state:{
count:0
},
getters:{
showNum(state){
return'当前最新的数量是:'+state.count
}
}

调用 Getter
使用getters的第一种方式

this.$store.getters.名称

使用getters的第二种方式

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue 3中使用Vuex,你需要按照以下步骤进行设置: 1. 安装Vuex:在终端中运行以下命令安装Vuex: ``` npm install vuex@next ``` 2. 创建一个Vuex store:在你的项目中创建一个新的文件(例如store.js),并导入`createStore`函数和你的模块文件(如果有的话): ```javascript import { createStore } from 'vuex'; import moduleA from './moduleA'; export default createStore({ modules: { moduleA } }); ``` 3. 创建模块(可选):如果你的应用程序需要使用模块来组织状态,你可以创建一个或多个模块文件。在上面的示例中,我们导入了一个名为moduleA的模块。 4. 在Vue应用程序中使用Vuex:在你的main.js文件中导入创建的store,并将其与Vue应用程序实例关联: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import store from './store'; const app = createApp(App); app.use(store); app.mount('#app'); ``` 现在,你可以在你的Vue组件中使用Vuex的功能,包括状态管理、mutations、actions和getters等。 例如,在组件中访问和修改状态: ```javascript import { useStore } from 'vuex'; export default { setup() { const store = useStore(); // 访问状态 const count = computed(() => store.state.moduleA.count); // 修改状态 const increment = () => { store.commit('moduleA/increment'); }; return { count, increment }; } }; ``` 这就是在Vue 3中使用Vuex的基本步骤。你可以在官方文档中了解更多关于Vuex的信息:https://next.vuex.vuejs.org/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值