vue3下使用Vuex,vuex入门

一,在nodejs项目中安装vuex模块,这里再vue-cli创建的项目下安装模块

npm install vuex

二,创建文件夹store和index.js文件

src/store/index.js代码如下(以下是vue2的写法):

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

//公共state对象,存储所有组件的状态
const state={
  user:{
    name:''
  }
}


//唯一取值的方法,计算属性
const getters={
  getUser(state){
    return state.user;
  }
}

//唯一可以修改state值的方法,同步阻塞
const mutations={
  updateUser(state,user){
    state.user = user;
  }
}

//异步调用mutations方法
const actions = {
  asyncUpdateUser(context,user){
    context.commit('updateUser',user)
  }
}

//暴露出去
export default new Vuex.store({
  state,
  getters,
  mutations,
  actions
})

以下是vue3的写法如下

import { createStore } from 'vuex'

//公共state对象,存储所有组件的状态
const state={
  user:{
    name:''
  }
}

//唯一取值的方法,计算属性
const getters={
  getUser(state){
    return state.user;
  }
}

//唯一可以修改state值的方法,同步阻塞
const mutations={
  updateUser(state,user){
    state.user = user;
  }
}

//异步调用mutations方法
const actions = {
  asyncUpdateUser(context,user){
    context.commit('updateUser',user)
  }
}

//暴露出去
export default createStore({
  state,
  getters,
  mutations,
  actions
})

vue3也可以如下写法,只是把方法直接放进去

import { createStore } from 'vuex'

export default createStore({
  //公共state对象,存储所有组件的状态
  state: {
    user:{
      name:''
    }
  },
  //唯一取值的方法,计算属性
  mutations: {
    getUser(state){
      return state.user;
    }
  },
  //异步调用mutations方法
  actions: {
    asyncUpdateUser(context,user){
      context.commit('updateUser',user)
    }
  },
  //唯一可以修改state值的方法,同步阻塞
  modules: {
    updateUser(state,user){
      state.user = user;
    }
  }
})

总结,vue2需要引用vue和vuex,而vue3下边只需要引用vuex,感觉vuex的写法更加简洁

三,在项目引用

在src/main.js文件引用vuex,如下

vue2如下

import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
import Vuex from 'vuex' //引用vuex
import storefrom './store' //引用vuex

const app = createApp(App)
app.use(Antd)
app.use(router)
app.use(Vuex) //引用vuex
app.use(store) //引用vuex
app.mount('#app')

vue3如下

import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
import store  from './store'

const app = createApp(App)
app.use(Antd)
app.use(router)
app.use(store )
app.mount('#app')

总结,vue2需要引用vuex和store,而vue3只需要引用store,所以vue3更加简洁

四,项目入口文件main.js引用了store之后我们就可以在项目中来使用vuex了

//记录user对象
this.$store.dispatch('asyncUpdateUser',{name:this.form.username})

//在需要的地方读取对象
this.$store.getters.getUser.name

//在模板中我们可以如下调用
{{ this.$store.getters.getUser.name }}

this可以省略如下:
{{ $store.getters.getUser.name }}

引用方法2,如果只是在个别页面调用,可以如下:

// 头部引用mapActions 
import { mapActions } from 'vuex'

在方法中调用
methods: {

...mapActions(['Login', 'Logout']), // 

  handleSubmit (e) {
    Login(loginParams) // 在方法里边就可以这样直接调用store里边的方法了
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boyxgb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值