Vue3 响应式全局对象

项目需求 实现一个 响应式全局对象,在A模板页修改全局对象 ,在B模板页中自动响应改变为新值

 main.js

 全局对象  globalVars 

复制代码
import { createApp } from 'vue'
import { reactive } from 'vue'

import App from './App.vue'
import axios from 'axios'
 
const app = createApp(App);
app.config.globalProperties.$axios = axios;

const globalVars = reactive({
    var1: 'value1',
    var2: 'value2'
  })
  
app.provide('globalVars', globalVars)

app.mount('#app');
复制代码

 

模板页 FootComponent.vue 

用于改变 全局对象  globalVars 中 var1 的值

复制代码
<script>
// 在子组件中注入全局对象
import { inject } from 'vue';

export default {
  // 组件名称
  name: 'FootComponent',
  setup() {
    // 注入全局对象
    const globalVars = inject('globalVars')
    return {
      globalValue,
      handleClick
    };

    function handleClick() {
      console.log("原:"+globalVars.var1);
      globalVars.var1 = 'new value';
      console.log("改后:"+globalVars.var1);
    }
  },
复制代码
<a href="javascript:;" class="IndConFa flexC fl-cen" 
v-on:click="handleClick()" ><p>{{ globalValue }}点击改变全局对象</p></a>

 

模板页 SoftComponent.vue 

用于显示

复制代码
<script>
// 在子组件中注入全局对象
import { inject, watch } from 'vue'

export default {
  // 组件名称
  name: 'SoftPhoneComponent',
  data() {
        return {
            global_var:"",    
        }
    },
  setup() {
    // 注入全局对象
    const globalVars = inject('globalVars');

    watch(() => globalVars.var1, (newValue) => {
        // 更新自己的状态
        globalVars.var1=newValue;
        console.log("watch "+newValue);    
    })
    
    return {
        globalValue,
        globalVars
    };

  },

复制代码

显示

<a href="javascript:;" class="IndPhone flexC fl-cen">
<p>90021<br>全局变量{{ globalVars.var1 }} <br></p></a>

 

另外如果想在 mian.js 的函数中访问这个全局对象

是不能加 this. 的 而且这个函数要在 定义合局变量的后面写

例如

//改变全局对象
function websocket_resMsg_extTelStatus(msg){
       globalVars.var1 = msg;
}

 

posted @   海乐学习  阅读(414)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2022-07-07 Vue 表格 增删改查 纯前端
2022-07-07 Vue 列表 增删改 前端代码
2022-07-07 Vue var 变量 按数字形式 加 1
2022-07-07 Vue el-dialog 动态修改 title 值
2022-07-07 Intellij IDEA 的maven项目 通过Java代码,实现 Jetty 的 Http服务器
2022-07-07 JS 将json字符串 转为 json对象 中JSON.parse和eval的区别及用法
2022-07-07 JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串
点击右上角即可分享
微信分享提示