store,//在main.js中导入store实例
components: { App },
template: ‘’
})
5. 之后按要求编码,即可使用vuex的相关功能
vuexPage1.vue
页面1:欢迎来到{{msg}}
6.配置路由
import vuexPage1 from ‘@/views/sys/vuexPage1’
{
path: ‘/sys/vuexPage1’,
name: ‘vuexPage1’,
component: vuexPage1
}
7.展示结果
五、vuex取值
1.在state.js编写全局要读取的数据
export default{
resturantName:‘慧慧餐馆’
}
2.在VuexPage1和VuexPage2中填写计算属性
computed:{//计算属性
msg(){
//return “KFC”;
return this.$store.state.resturantName;
}
}
结果:
vuex第二种取值方法:
1.Getterts.js
export default{
getResturanName:(state)=>{
return state.resturantName;
}}
2.调用
computed:{//计算属性
msg(){
//return “KFC”;
//return this. s t o r e . s t a t e . r e s t u r a n t N a m e ; ∗ ∗ r e t u r n t h i s . store.state.resturantName; **return this. store.state.resturantName; ∗∗returnthis.store.getters.getResturanName;//推荐使用这种**
}
}
六、vuex存值
1.处理数据的唯一途径,state的改变或赋值只能在这里Mutation.js
export default{
// type(事件类型): 其值为setResturantName
// payload:官方给它还取了一个高大上的名字:载荷,其实就是一个保存要传递参数的容器
setResturanName:(state,payload)=>{
state.resturantName=payload.resturantName;
}
}
2.在VuexPage1中添加一个按钮来控制,并且调用Mutation
页面1:欢迎来到{{msg}}
**
运行结果:
七、Vuex异步加载
1.编写store/Action.js
export default{
setResturanNameAsync:(context,payload)=>{
//context等价与this.$store,也就是他代表了vuex的上下文
//state.resturantName=payload.resturantName;
//在这个文件中是可以调用同步文件mutation.js定义的同步方法
//context.commit(“setResturanName”,payload);
//为了让结果明显
setTimeout(function(){
context.commit(“setResturanName”,payload);//同步里面调异步
},6000);
}
}
2.在VuexPage1中调用Action.js中的setResturantNameAsync
<button @click=“nxAsync”>最后主人
nxAsync(){
this.$store.dispatch(“setResturanNameAsync”,{//载荷
resturantName:“最后的主人”
})
}
3.输出结果
八、后台交互
1.在store/Mutation.js中编写doAjax方法
export default{
// type(事件类型): 其值为setResturantName
// payload:官方给它还取了一个高大上的名字:载荷,其实就是一个保存要传递参数的容器
setResturanName:(state,payload)=>{
state.resturantName=payload.resturantName;
},
doAjax:(state,payload)=>{
//需求:想在当前的文件中与后台服务器做数据交互
let _this= payload._this;
let url = _this.axios.urls.SYSTEM_MENU_TREE;
_this.axios.post(url, {}).then((resp) => {
console.log(resp);
}).catch(function(error) {
console.log(error);
});
}
}
在调用doAjax中_this:this是因为Mutation.js获取不到urls,需要用它来代替
2. 在VuexPage1中调用doAjax
<button @click=“doAjax”>vuex与后台交互
doAjax(){
this.$store.commit(“doAjax”,{
_this:this
})
},
最后
你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我特地针对初学者整理一套前端学习资料
最后
你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我特地针对初学者整理一套前端学习资料
[外链图片转存中…(img-PP770oVz-1714365063638)]