这是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')