vue3 如何采用 App.vue定义全局变量与方法,并实现局部vue页面刷新
2024-01-08 17:45:05
需求描述:
两个VUE页面,A为主页面,B为子页面。现需求为,在A页面点击li数据后,B页面内容自动改变。?
目录
一、分析
网上解决方案一般使用provide
和inject
来定义全局变量和方法,并在局部页面中刷新。但多次尝试后并不适合,以下是prop 父 子传值以及全局方法配合实现;
?
二、代码示例
主页面(A.vue)
<template>
<div>
<ul>
<li v-for="item in list" :key="item.id" @click="handleClick(item)">{{ item.name }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' }
]
};
},
methods: {
handleClick(item) {
// 转换为对象
let obj = JSON.parse(JSON.stringify(item));
// this.$root.可以直接调用全局方法(App.vue 中的方法)
this.$root.updateGlobalVariable(obj._source.id,obj._source.name);
},
}
};
</script>
子页面(B.vue)
<template>
<div>
<p>{{ globalid }}</p>
<p>{{ globalname }}</p>
</div>
</template>
<script>
export default {
props:['globalid','globalname'],
};
</script>
App页面(App.vue)
<template>
<div id="app">
<A :globalid="globalid" :globalid="globalid"></A>
<B :globalname="globalname" :globalname="globalname"></B>
</div>
</template>
<script>
import a from './components/A.vue';
import b from './components/B.vue';
export default {
name: 'App',
components: {
a,
b
},
data() {
return {
globalid: 'globalid Str ...', // 初始化全局变量
globalname: 'globalname Str ...' // 初始化全局变量
}
},
methods:{
updateGlobalVariable(id,name) {
this.globalid= id; // 更新全局变量的值
this.globalname= name; // 更新全局变量的值
// 重新加载页面
this.$forceUpdate();
}
}
};
</script>
亲测可用!?
文章来源:https://blog.csdn.net/m0_60769905/article/details/135460774
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!