接上三篇, 这篇介绍Action的使用.
master分支为最终版本.
每个阶段的讲解都会创建一个分支.
init分支为初始化后配置完成路由的版本.
mutation那篇提到, mutation必须是同步的修改state中的状态, 但是实际中, 异步的修改还是有很多场景的, 这种情况就需要本文所要学习的action了.
官方文档对于mutation和action的区别解释:
Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。
也就是说, 在action中进行异步的操作, 当有结果后, 再根据结果提交相应的mutation.
举个栗子:
请求豆瓣的top250电影, 将结果排名第一的电影显示在页面上.
先修改一下config下的index.js, 配置跨域地址:
proxyTable: {
'/': {
target: 'https://api.douban.com',
changeOrigin: true,
}
},
state中定义tName变量.
tName:""
mutation中定义改变tName的mutation.
changeTname(state, name){
state.tName = name;
}
定义action请求数据.
actions: {
top250FirstName(context){
axios({