国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 使用UI框架reactive數(shù)據(jù)更新,視圖不更新問題

這篇具有很好參考價值的文章主要介紹了vue3 使用UI框架reactive數(shù)據(jù)更新,視圖不更新問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本篇主要記錄兩個問題,然而這兩個問題又都可以對應(yīng)同一種解法。廢話少說,解決方法在最上面。推薦格式如下:

const form = reactive({
    formData: {//為了保證響應(yīng)性,一定一定要多包這一層
      key1: value,
      key2: value,
    },
  });
//或 個人比較喜歡第一種,大家各自取用吧
const form = ref({
   key1: value,
   key2: value,
});

一定一定要再多包一層,不然就會遇到一些問題。(⊙﹏⊙)雖然這是一句廢話。下面的內(nèi)容過于基礎(chǔ)且本篇只記錄bug和解法,想要探求為什么的呢,還請自己去查API。不愿浪費時間的,看到這里就結(jié)束了。

做項目一般都用個UI框架,我這次用的是字節(jié)的Arco Design,vue是3.2版本的。我一開始寫了個表單,數(shù)據(jù)是這樣式定義的

<template>
    <a-input v-model="obj.k1" placeholder="請?zhí)顚憸y試" />
    <input v-model="obj.k2" placeholder="請?zhí)顚憸y試值" />
</template>
<script setup>
    //表單數(shù)據(jù)
    let obj = reactive({ k1: undefined, k2: undefined });
    //本地記錄或后臺獲取的表單數(shù)據(jù)
    const text = { k1: '測試', k2: 'abcd' };
    /*
     * 第一次解決視圖不更新
     * const text = reactive({ k1: '測試', k2: 'abcd' });
    */
    //獲取到表單數(shù)據(jù)后賦值給表單
    obj = text;
</script>

然后,第一次出現(xiàn)數(shù)據(jù)編輯,視圖不更新。

這個我想那就強(qiáng)制刷新下視圖吧,然后我就"$forceUpdate()",然后就出乎意料的失敗了,那我再想想吧,后來我嘗試這在獲取的數(shù)據(jù)前加了個reactive,然后我就沿著錯誤的道路,繼續(xù)往下走,直到遇到了第二個bug。

再說第二個bug前,插句話,此時原生的input還可以視圖響應(yīng)數(shù)據(jù)。因此,我標(biāo)題加上了UI框架。

第二個視圖不更新是在清空表單的時候遇到的。就是一旦給定初始值,我在清空表單時將對象置空,就又不好使了。

這次我的解決方法更直接了。直接點屬性賦值。

<template>
    <a-input v-model="obj.k1" placeholder="請?zhí)顚憸y試" />
    <input v-model="obj.k2" placeholder="請?zhí)顚憸y試值" />
    <a-button type="primary" status="danger" @click="a">清空數(shù)據(jù)</a-button>
</template>
<script setup>
    //表單數(shù)據(jù)
    let obj = reactive({ k1: undefined, k2: undefined });
    //本地記錄或后臺獲取的表單數(shù)據(jù)
     const text = reactive({ k1: '測試', k2: 'abcd' });
    //獲取到表單數(shù)據(jù)后賦值給表單
    obj = text;
    //清空表單
    const a = () => {
        /*
        * 好使
        * 如果對象key值較多可以遍歷對象,如采用for..in等循環(huán)
        */
        obj.k1 = undefined;
        obj.k2 = undefined;
        //不好使
        obj = {};
        //不好使
        obj = reactive({});
        //不好使
        obj = reactive({ k1: undefined, k2: undefined });
  };
</script>

雖然表單這樣也算完成了。但是都寫成這樣了,還不知道自己寫的有問題,那才有鬼了。

于是,我就又寫了一遍。

<template>
    <a-input v-model="obj2.val.k1" placeholder="請?zhí)顚憸y試" />
    <input v-model="obj2.val.k2" placeholder="請?zhí)顚憸y試值" />
    <a-button type="primary" status="danger" @click="a">清空數(shù)據(jù)</a-button>
</template>
<script setup>
    const obj2 = reactive({
        val: {
            k1: undefined,
            k2: undefined,
        },
    });
    const text2 = { k1: '測試', k2: 'abcd' };
    obj2.val = text2;
    const a = () => {
        obj2.val = {};
    };
</script>

<template>
    <a-input v-model="obj2.k1" placeholder="請?zhí)顚憸y試" />
    <input v-model="obj2.k2" placeholder="請?zhí)顚憸y試值" />
    <a-button type="primary" status="danger" @click="a">清空數(shù)據(jù)</a-button>
</template>
<script setup>
  const obj2 = ref({
    k1: undefined,
    k2: undefined,
  });
  const text2 = { k1: '測試', k2: 'abcd' };
  obj2.value = text2;
  const a = () => {
    obj2.value = {};
  };
</script>

嗯嗯,很快就完成了。文章來源地址http://www.zghlxwxcb.cn/news/detail-526722.html

到了這里,關(guān)于vue3 使用UI框架reactive數(shù)據(jù)更新,視圖不更新問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue3 ref reactive響應(yīng)式數(shù)據(jù) 賦值的問題

    vue3 ref reactive響應(yīng)式數(shù)據(jù) 賦值的問題

    doing 遇見就記錄,最后更新時間23.8.30 錯誤示范:直接賦值 以數(shù)組為例,對象也是一樣的操作。 ref 定義的屬性等價于 reactive({value:xxx}) ,所以 reactive、ref 直接重新賦值丟失響應(yīng)是因為引用地址變了 正確寫法 方法1: ref.value ,代碼中更為清晰地表明響應(yīng)式數(shù)據(jù) 方法2:包一層

    2024年02月10日
    瀏覽(27)
  • 解決在vue3中使用reactive響應(yīng)式,賦值后造成頁面不改變的問題?

    解決在vue3中使用reactive響應(yīng)式,賦值后造成頁面不改變的問題?

    我們需要在vue3中使用服務(wù)器的數(shù)據(jù)渲染到頁面上,我使用的是reactive生成的響應(yīng)式數(shù)據(jù)屬性,但是在掛載后請求的數(shù)據(jù)并沒有渲染顯示到頁面上。 技術(shù): vue3 、 element-ui-plus home.vue 我們通過直接賦值,可以看出數(shù)據(jù)變?yōu)槠胀ǖ臄?shù)據(jù)了,并不是響應(yīng)式的。 代碼如下: 可以看出

    2023年04月26日
    瀏覽(25)
  • 解決Vue數(shù)組數(shù)據(jù)變化了,賦值后視圖沒更新的問題

    解決Vue數(shù)組數(shù)據(jù)變化了,賦值后視圖沒更新的問題

    最近遇到一個問題,表格數(shù)據(jù)變化了,直接賦值后視圖沒更新,打印表格數(shù)據(jù)發(fā)現(xiàn)是最新的數(shù)據(jù),這主要是因為,Vue.js 不能檢測到對象屬性的添加或刪除。因為 Vue.js 在初始化實例時將屬性轉(zhuǎn)為 getter/setter,所以屬性必須在 data 對象上才能讓 Vue.js 轉(zhuǎn)換它,才能讓它是響應(yīng)的。

    2024年02月02日
    瀏覽(28)
  • Vue3 reactive丟失響應(yīng)式問題

    Vue3 reactive丟失響應(yīng)式問題

    問題描述: 使用 reactive 定義的對象,重新賦值后失去了響應(yīng)式,改變值視圖不會發(fā)生變化。 測試代碼: 輸出結(jié)果: ? 從上述測試代碼中,ref 定義的對象有響應(yīng)式,而 reactive 定義的對象失去了響應(yīng)式,這是什么原因呢?官網(wǎng)中寫到: 如果將一個對象賦值給 ref ,那么這個對

    2024年02月05日
    瀏覽(21)
  • Vue3中reactive響應(yīng)式失效的問題

    彈窗內(nèi)部有一個挑選框,要通過請求接口獲取挑選框下面可供選擇的數(shù)據(jù)。 這是一個很簡單的情境,我立刻有了自己的思路。如果實現(xiàn)搜索,數(shù)據(jù)較少可以直接用elementplus自帶的filter。如果數(shù)據(jù)較多,就需要傳val,在后臺進(jìn)行搜索,然后分頁渲染。我選擇的是前者,所以只需

    2024年02月10日
    瀏覽(32)
  • 避大坑!Vue3中reactive丟失響應(yīng)式的問題

    在vue3中,我們定義響應(yīng)式數(shù)據(jù)無非是ref和reactive。 但是有的小伙伴會踩雷!導(dǎo)致定義的響應(yīng)式丟失的問題。 大錯特錯?。。?大錯特錯?。?! 1.ref 定義數(shù)據(jù)(包括對象)時,都會變成 RefImpl(Ref 引用對象) 類的實例,無論是修改還是重新賦值都會調(diào)用 setter,都會經(jīng)過 reactive 方法

    2023年04月16日
    瀏覽(28)
  • Vue3 - 如何將 reactive() 創(chuàng)建的響應(yīng)式數(shù)據(jù) “輕松“ 恢復(fù)成初始數(shù)據(jù)值,重置 reactive() 定義的數(shù)據(jù)使其恢復(fù)成初始定義的數(shù)據(jù)結(jié)構(gòu)(使用一個函數(shù)輕松解決,并且不丟失響應(yīng)式)

    Vue3 - 如何將 reactive() 創(chuàng)建的響應(yīng)式數(shù)據(jù) “輕松“ 恢復(fù)成初始數(shù)據(jù)值,重置 reactive() 定義的數(shù)據(jù)使其恢復(fù)成初始定義的數(shù)據(jù)結(jié)構(gòu)(使用一個函數(shù)輕松解決,并且不丟失響應(yīng)式)

    典型的場景就是我有一個表單,用戶輸入了一些內(nèi)容后,點擊提交后程序需要 “重置表單” 把上次填過的內(nèi)容重置掉。 本文實現(xiàn)了 一個函數(shù)重置 reactive 創(chuàng)建的數(shù)據(jù),恢復(fù) “最開始時的數(shù)據(jù)結(jié)構(gòu)和默認(rèn)值,” 你可以直接復(fù)制本文提供的函數(shù),有三種方案可選。 直接調(diào)用函

    2024年02月11日
    瀏覽(23)
  • vue3使用ref和reactive

    vue3使用ref和reactive

    目錄 ??????? vue3使用ref和reactive的方法 1.ref 2.reactive Vue 3 使用 ref 和 reactive 創(chuàng)建響應(yīng)式對象的完整示例: 1.示例 2.示例說明 vue3使用ref和reactive的方法 Vue 3引入了兩個新的API, ref 和 reactive ,用于創(chuàng)建響應(yīng)式對象。這兩個方法都位于 Vue.prototype 上,因此可以在組件實例

    2024年02月08日
    瀏覽(29)
  • Vue3 中應(yīng)該使用 Ref 還是 Reactive?

    你可能會好奇:為什么我們需要使用帶有? .value ?的 ref,而不是普通的變量?為了解釋這一點,我們需要簡單地討論一下 Vue 的響應(yīng)式系統(tǒng)是如何工作的。 當(dāng)你在模板中使用了一個 ref,然后改變了這個 ref 的值時,Vue 會自動檢測到這個變化,并且相應(yīng)地更新 DOM。這是通過一

    2024年02月20日
    瀏覽(26)
  • 【vue3】優(yōu)雅的解決reactive()響應(yīng)式對象初始化重新賦值問題v2

    關(guān)聯(lián)的上篇文章: 【vue3】優(yōu)雅的解決reactive()響應(yīng)式對象初始化重新賦值問題_vue3 reactive重新賦值_oumae-kumiko的博客-CSDN博客 在上面該文章提到了reactive該api的不方便之處和相關(guān)重置數(shù)據(jù)方法的解析。下面提供的方法就是自己封裝的`$reactive`方法,通過該方法返回響應(yīng)式數(shù)據(jù)和重

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包