Rumah > hujung hadapan web > View.js > Bagaimana untuk menyelesaikan masalah amaran prestasi vue3 menggunakan ref

Bagaimana untuk menyelesaikan masalah amaran prestasi vue3 menggunakan ref

王林
Lepaskan: 2023-05-13 15:10:06
ke hadapan
2440 orang telah melayarinya

    Amaran prestasi Vue3 apabila menggunakan ref

    Masalah

    Kod amaran prestasi apabila menggunakan ref adalah seperti berikut

    <template>
      <div>
        <component :is="currentTabComponent"></component>
      </div>
    </template>
    
    <script setup>
    
    import { ref,shallowRef } from "vue";
    import TodoList from "./components/TodoList.vue";
    import Rate from "./components/Rate.vue";
    
    let tabs ={
      TodoList,
      Rate
    }
    let currentTabComponent = ref(TodoList)
    </script>
    Salin selepas log masuk

    Amaran

    runtime-core.esm-bundler.js:6591 [Vue warn]: Vue menerima Komponen yang dijadikan objek reaktif Ini boleh menyebabkan overhed prestasi yang tidak perlu dan harus dielakkan dengan menandakan komponen dengan markRaw atau menggunakan shallowRef dan bukannya ref. Komponen yang dibuat reaktif: Objek reaktif. Ini menyebabkan overhed prestasi yang tidak perlu dan harus dielakkan dengan menandakan komponen dengan markRaw atau menggunakan shallowRef dan bukannya ref. Komponen bertindak balas:

    • : Menanda objek supaya ia tidak akan ditukar kepada proksi. Mengembalikan objek itu sendiri.

      markRaw

    • : Buat ref yang menjejaki perubahan dalam nilai .nya sendiri, tetapi tidak menjadikan nilainya responsif.

      shallowRef

    • SELESAIKAN

    Saya menyelesaikan masalah ini dengan menandakan objek sebagai shallowRef

    Jadi daripada menyimpan komponen dalam keadaan anda Simpan rujukan berkunci kepadanya dan cari objek

    Kod penuh

    <template>
      <div>
        <h2>带动画的Todolist</h2>
        <button
          v-for="(i,tab) in tabs"
          :key="i"
          :class="[&#39;tab-button&#39;, { active: currentTabComponent === tab }]"
          @click="fn(tab)"
        >
          {{ tab }}
        </button>
        <component :is="currentTabComponent"></component>
      </div>
    </template>
    
    <script setup>
    
    import { ref,shallowRef } from "vue";
    import TodoList from "./components/TodoList.vue";
    import Rate from "./components/Rate.vue";
    
    let tabs ={
      TodoList,
      Rate
    }
    let currentTabComponent = shallowRef(TodoList)
    
    function fn (tab){
      currentTabComponent.value = tabs[tab]
    }
    </script>
    Salin selepas log masuk
    penggunaan fungsi ref vue3

    1 Dalam fungsi persediaan , anda boleh menggunakan fungsi ref untuk cipta data responsif. Apabila data berubah, Vue akan mengemas kini UI secara automatik

    <template>
        <div>
            <h2>{{mycount}}</h2>
            <button @click="changeMyCount">changeMyCount</button>
        </div>
    </template>
     
    <script>
    import { ref } from "vue";
    export default {
        name: "ref",
        setup(){
            const mycount = ref(2);
            const changeMyCount = ()=>{
                mycount.value = mycount.value + 2 ;
            }
            
            return {
                mycount,
                changeMyCount,
            }
        }
    };
    </script>
    Salin selepas log masuk

    Fungsi ref hanya boleh memantau perubahan dalam jenis asas dan tidak boleh memantau perubahan dalam jenis kompleks (seperti Objek, tatasusunan)

    Untuk memantau perubahan dalam jenis kompleks, anda boleh menggunakan fungsi reaktif

    2 Dapatkan elemen melalui atribut ref

    vue3 perlu menggunakan kaedah kitaran hayat apabila persediaan dilaksanakan , Elemen dalam templat belum lagi dipasang pada halaman, jadi elemen mesti diperoleh selepas dipasang.

    rreeee

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah amaran prestasi vue3 menggunakan ref. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan