vue3全局變量動態變化值

我在我的vue3項目中遇到了一個問題,即全局變量不會更改模板中的值

main.js

import router from './router'
import { createMetaManager } from 'vue-meta'
import i18n from './assets/js/i18n.js'
import App from './App.vue'
import { reactive } from 'vue'

import './assets/js/app.js'
import './assets/styles/app.scss'


const app = createApp(App)
  .use(router)
  .use(i18n)
  .use(createMetaManager())

app.config.globalProperties.$test = reactive({ id: 1, name: 'test' })

app.mount('#app')

然后我嘗試以這種方式訪問組件中的全局變量$test:

<template>
    <template v-if='$test.id'>{{ $test }}</template>
    <button class='btn btn-primary' @click='set'>change</button>
    <button class='btn btn-primary' @click='reset'>reset</button>
    <button class='btn btn-primary' @click='update'>update</button>
</template>

<script>
export default {
    methods: {
        set() {
            this.$test = { id: 3, name: 'user3' }
            console.log(this.$test)
        },
        reset() {
            this.$test = []
            console.log(this.$test)
        },
        update() {
            this.$test.name = 'updated name'
            console.log(this.$test)
        },
    },
    mounted() {
        this.$test = { id: 2, name: 'user' }
        console.log(this.$test)
    }
}
</script>

所以當我轉到頁面時,我可以在瀏覽器控制臺中看到全局變量實際上發生了變化

但在模板中它總是相同的(正如我在main.js中設置的那樣)

所以我的問題是如何在模板中動態地進行全局變量更改?

將來它應該是一個$user對象,所以當用戶登錄時,我需要用數據填充$user對象;當用戶注銷時,我希望像this.$user = []那樣使對象為空,并在模板中顯示給用戶或登錄/注冊鏈接,或通過v-if v-else轉到配置文件鏈接,類似于:

<tempalte>
    <a href='/profile' v-if='$user.id'>Profile</a>
    <a href='/register' v-else'>Register</a>
</template>

謝謝關注。

? 最佳回答:

當您將一個reactive對象設置為另一個對象時,您刪除了它的{@111}屬性。在這種情況下,您應該使用ref

app.config.globalProperties.$test = ref({ id: 1, name: 'test' })
...
set() {
    this.$test.value = { id: 3, name: 'user3' }
    console.log(this.$test.value)
},
reset() {
    this.$test.value = []
    console.log(this.$test.value)
},
update() {
    this.$test.value.name = 'updated name'
    console.log(this.$test.value)
},

順便說一句,我不知道你使用全局變量的原因,但推薦的方法是使用像pinia這樣的狀態管理

主站蜘蛛池模板: 在线观看国产一区亚洲bd| 日韩一区二区在线观看视频| 一区二区中文字幕在线观看| 中文字幕aⅴ人妻一区二区| 相泽南亚洲一区二区在线播放 | 精品一区二区三区在线视频| 大帝AV在线一区二区三区| 91福利视频一区| 亚洲AV成人一区二区三区AV| 国产日韩一区二区三免费高清| 暖暖免费高清日本一区二区三区| 一区二区传媒有限公司| 精品成人乱色一区二区| 3d动漫精品啪啪一区二区中文| 国产一区二区电影| 亚洲av无码一区二区三区乱子伦| 国产一区二区视频在线观看| 亚洲视频在线一区二区| 国产韩国精品一区二区三区| 精品乱人伦一区二区| 国产成人久久一区二区三区| 国产在线步兵一区二区三区| 国产亚洲一区二区在线观看 | 高清国产AV一区二区三区| 亚洲日本一区二区三区在线不卡 | 中文字幕一区二区三区在线播放| 精品乱人伦一区二区| 亚洲第一区精品观看| 精品无码人妻一区二区三区不卡| 国产亚洲情侣一区二区无| 中文字幕一区二区人妻性色| 亚洲一区二区三区高清| 中文字幕一区二区三匹| 亚洲AV无码一区二区三区久久精品 | 中文字幕aⅴ人妻一区二区| 无码人妻AⅤ一区二区三区| 中文字幕av日韩精品一区二区| 无码人妻aⅴ一区二区三区有奶水| 国产一区风间由美在线观看| 国产精品 一区 在线| 日韩一区精品视频一区二区|