vue3 如何采用 App.vue定义全局变量与方法,并实现局部vue页面刷新

需求描述:
两个VUE页面,A为主页面,B为子页面。现需求为,在A页面点击li数据后,B页面内容自动改变。 

目录

一、分析

二、代码示例


一、分析

网上解决方案一般使用provideinject来定义全局变量和方法,并在局部页面中刷新。但多次尝试后并不适合,以下是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>

亲测可用! 

相关推荐

  1. Vue实现【组件局部刷新】及【页面刷新

    2024-01-09 13:32:04       37 阅读
  2. 如何使用vue定义组件之——全局or局部

    2024-01-09 13:32:04       41 阅读
  3. 利用jQuery实现AJAX定时刷新局部页面实例

    2024-01-09 13:32:04       72 阅读
  4. JeecgBoot 3.6.1 vue页面定时刷新列表

    2024-01-09 13:32:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 13:32:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 13:32:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 13:32:04       82 阅读
  4. Python语言-面向对象

    2024-01-09 13:32:04       91 阅读

热门阅读

  1. 贪心算法的“左最优“与“右最优“

    2024-01-09 13:32:04       54 阅读
  2. 白话编程-概述

    2024-01-09 13:32:04       53 阅读
  3. Android系列:四大组件、五大存储、六大布局

    2024-01-09 13:32:04       40 阅读
  4. ARM CCA机密计算架构软件栈(下)

    2024-01-09 13:32:04       57 阅读
  5. 【代码片段】【C++】C++11线程安全单例模式

    2024-01-09 13:32:04       56 阅读
  6. linux 设备模型之设备驱动

    2024-01-09 13:32:04       48 阅读
  7. 【RDMA】RDMA事件通知机制详解

    2024-01-09 13:32:04       51 阅读