亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vuejs:數據屬性更改時組件不重新渲染

Vuejs:數據屬性更改時組件不重新渲染

皈依舞 2023-02-17 17:36:48
我有一個布爾類型的屬性 - websiteHasCode,它從商店中獲取一個值。我想有條件地使用 websiteHasCode(true 或 false)在頁面中呈現 html,最初組件 A 很好(websiteHasCode 的正確值)。頁面中有一個模態,它是組件A的子組件B,模態具有更新存儲值的功能-isCodeActive。所以當它更新時我希望變量 websiteHasCode 也更新并最終更新 Dom,所以我使用了一個觀察者并按照這個 SO 問題進行了計算,但它似乎沒有更新。誰能幫助我在這里做錯了什么?<template>   <div>    <div v-if="websiteHasCode">          ...............    </div>    <div v-else>          ................    </div>  </div></template><script>    export default {        name: "dashboard",        props: [],        data() {            return {                websiteHasCode: Boolean,            }        },        mounted() {            this.websiteHasCode = this.$store.state.isCodeActive;        },        computed: {          isCodeActive () {            return this.$store.state.isCodeActive;          }        },        watch: {          isCodeActive: {            handler() {              console.log(this.websiteHasCode) // returns false              this.websiteHasCode = this.$store.state.isCodeActive;              console.log(this.websiteHasCode) // returns true but dom does not re-render            },            deep: true          },        },      }</script>這也是觀察狀態變化的最佳方法嗎,還有更好的方法嗎?
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

除非你想根據 isCodeActive 的值做其他事情,否則對計算使用觀察器是沒有意義的,只需在你的 v-if 中直接使用計算,如下所示:


<template> 

  <div>

    <div v-if="isCodeActive">

          ...............

    </div>

    <div v-else>

          ................

    </div>

  </div>

</template>

    


<script>

    export default {

        name: "dashboard",

        props: [],

        data() {

            return {

                websiteHasCode: Boolean, // not sure why you're initializing with "Boolean" here, it should be false

            }

        },

        computed: {

          isCodeActive () {

            return this.$store.state.isCodeActive;

          }

        },

      }

</script>

此外,您將 websiteHasCode 屬性初始化為“Boolean”而不是 false??赡苁?vue 將其視為真實值,因此不會更新布局。


查看完整回答
反對 回復 2023-02-17
  • 1 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號