vue3实现局部页面刷新效果的示例详解
更新时间:2024年01月09日 16:59:29 作者:Crhy、Y
这篇文章主要为大家详细介绍了vue3如何采用 App.vue定义全局变量与方法并实现局部页面刷新效果,文中的示例代码讲解详细,需要的可以参考一下
需求描述
两个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>
亲测可用!
到此这篇关于vue3实现局部页面刷新效果的示例详解的文章就介绍到这了,更多相关vue3局部页面刷新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决vue3中from表单嵌套el-table时填充el-input,v-model不唯一问题
这篇文章主要给大家介绍一下如何解决vue3中from表单嵌套el-table时填充el-input,v-model不唯一问题,文中有相关的解决方法,通过代码示例介绍的非常详细,需要的朋友可以参考下2023-07-07浅谈Vue3.0新版API之composition-api入坑指南
这篇文章主要介绍了Vue3.0新版API之composition-api入坑指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-04-04vue3如何通过provide和inject实现多层级组件通信
这篇文章主要介绍了vue3如何通过provide和inject实现多层级组件通信,本文通过实例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-11-11
最新评论