vuex--this.$store.dispatch

本文介绍了在vue-element-admin中关于Vuex的使用,包括登录后的路由跳转、this.$store.dispatch调用store中方法、this.$router.push的页面跳转功能以及vue的increment与Actions、Mutations的区别。重点讨论了Actions作为异步操作的手段,提交Mutation以改变Vuex Store的状态,并展示了如何在组件中映射和提交Mutations。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是vue-element-admin的simple例子。
下面是登录vue的代码。
在这里插入图片描述
问题:

1、登录之后做了什么?

执行登陆方法,成功之后,路由跳转到指定路径或者根目录

2、this.$store.dispatch是什么意思?

this.$store.dispatch(‘Login’, this.loginForm)来调取store里的user.js的login方法
在这里插入图片描述
在这里插入图片描述

3、this.$router.push又是什么意思?

修改 url,完成跳转
push 后面可以是对象,也可以是字符串

// 字符串
this.$router.push('/home/first')
// 对象
this.$router.push({ path: '/home/first' })
// 命名的路由
this.$router.push({ name: 'home', params: { userId: wise }})

4、vue的increment 是什么?

const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state) {
      // 变更状态
      state.count++
    }
  }
})

Action去comit一个mutation。它要指定去commit哪一个mutation,然后指定结束之后要做什么什么事情就要给出一个函数,所以说mutation的构成有两点名称和函数。

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment (context) {
      context.commit('increment')
    }
  }
})

action 异步操作

actions: {
  incrementAsync ({ commit }) {
    setTimeout(() => {
      commit('increment')
    }, 1000)
  }
}

5、Actions与Mutations的区别?

Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。

看下面的代码。

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment (context) {
      context.commit('increment')
    }
  }
})

***说一下Vuex ***

Vuex.Store({
  state,
  actions,
  mutation
});

vuex 真正限制你的只有 mutation 必须是同步的这一点,在vue中,只有mutation才能正真改变VUEX stroe中的state。
Action 提交的是 mutation,而不是直接变更状态。

Action 可以包含任意异步操作。 个人觉得这个action的 产生就是 因为mutation 不能进行异步操作,如果有异步操作那么就用action 来提交mutation。
如何在组件中提交mutations呢?

this.$store.commit('xxx')

使用 mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用(需要在根节点注入 store)

import { mapMutations } from 'vuex'

export default {
  methods: {
    ...mapMutations([
      'increment',
      'incrementBy'
    ]),
    ...mapMutations({
      add: 'increment'
    })
  }
}

‘increment’, // 将 this.increment() 映射为 this.$store.commit('increment')
// mapMutations 也支持载荷:
‘incrementBy’ // 将 this.incrementBy(amount) 映射为this.$store.commit('incrementBy', amount)
add: ‘increment’ // 将 this.add() 映射为 this.$store.commit('increment')

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值