Rumah hujung hadapan web View.js Bagaimana untuk melaksanakan senarai tak terhingga menggunakan Vue?

Bagaimana untuk melaksanakan senarai tak terhingga menggunakan Vue?

Jun 25, 2023 pm 03:23 PM
vue capai Senarai peringkat tak terhingga

Vue ialah salah satu rangka kerja bahagian hadapan yang paling popular pada masa ini, pengikatan data yang mudah dan idea komponen yang fleksibel digemari oleh pembangun. Dalam pembangunan, kami sering menghadapi senario di mana kami perlu memaparkan senarai tak terhingga Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan senarai tak terhingga.

1. Reka bentuk struktur data

Pelaksanaan senarai tak terhingga memerlukan struktur data bersarang Struktur data yang paling asas ialah struktur pepohon. Katakan struktur data yang perlu kita paparkan adalah seperti berikut:

[
    {id: 1, name: '菜单1', parent_id: 0},
    {id: 2, name: '菜单2', parent_id: 0},
    {id: 3, name: '菜单1-1', parent_id: 1},
    {id: 4, name: '菜单1-1-1', parent_id: 3},
    {id: 5, name: '菜单1-2', parent_id: 1},
    {id: 6, name: '菜单2-1', parent_id: 2},
    {id: 7, name: '菜单1-1-1-1', parent_id: 4}
]
Salin selepas log masuk

Antaranya, id mewakili pengecam unik nod, name mewakili nama nod, dan parent_id mewakili id semasa nod induk nod Jika ia adalah 0, ia bermakna ia adalah nod akar. id 表示节点的唯一标识,name 表示节点名称,parent_id 表示当前节点的父节点的 id,如果为 0 则表示是根节点。

二、树状图的构建

我们需要将原始数据构建成一棵树状图结构,以便于后续的遍历和展示。可以定义一个递归的函数,将节点依次添加到对应的父节点中。

function buildTree(list, parentId) {
    let res = []
    for (let i = 0; i < list.length; i++) {
        if (list[i].parent_id === parentId) {
            let children = buildTree(list, list[i].id)
            if (children.length) {
                list[i].children = children
            }
            res.push(list[i])
        }
    }
    return res
}

let treeData = buildTree(list, 0)
Salin selepas log masuk

三、列表的展示

Vue 提供了 v-for 指令用于循环渲染数据,我们可以使用递归组件来实现流畅的无限级列表展示。

在组件内,我们可以定义一个 <template> 标签,用于渲染当前节点及其子节点,如果当前节点存在子节点,则递归渲染子节点。在递归组件中,我们可以使用 props 来传递数据。

<template>
    <ul>
        <li v-for="item in list">
            {{item.name}}
            <recursive :list="item.children"></recursive>
        </li>
    </ul>
</template>
<script>
export default {
    name: 'recursive',
    props: {
        list: Array
    }
}
</script>
Salin selepas log masuk

上述代码中,我们使用递归组件 recursive,在循环渲染每个节点时,使用 <recursive> 标签对当前节点的子节点进行递归渲染。

四、节点的折叠和展开

无限级列表通常会有折叠和展开节点的功能,我们需要在组件中添加 isCollapsed 属性来表示当前节点是否折叠,并根据该属性来控制子节点的显示。

<template>
    <ul>
        <li v-for="item in list">
            <div @click="isCollapsed = !isCollapsed">{{item.name}}</div>
            <recursive v-show="!isCollapsed" :list="item.children"></recursive>
        </li>
    </ul>
</template>
<script>
export default {
    name: 'recursive',
    props: {
        list: Array
    },
    data() {
        return {
            isCollapsed: true
        }
    }
}
</script>
Salin selepas log masuk

上述代码中,我们在节点名称所在的 <div> 标签上添加了点击事件,点击时将 isCollapsed 属性取反,并使用 v-show

2. Pembinaan dendrogram

Kita perlu membina data asal ke dalam struktur dendrogram untuk memudahkan traversal dan paparan seterusnya. Anda boleh menentukan fungsi rekursif untuk menambah nod pada nod induk yang sepadan mengikut turutan.

rrreee

3. Paparan senarai

Vue menyediakan arahan v-for untuk data pemaparan gelung Kami boleh menggunakan komponen rekursif untuk mencapai paparan senarai tak terhingga yang lancar. 🎜🎜Dalam komponen, kita boleh mentakrifkan teg <template> untuk memaparkan nod semasa dan nod anaknya Jika nod semasa mempunyai nod anak, nod anak akan dipaparkan secara rekursif. Dalam komponen rekursif, kita boleh menggunakan prop untuk menghantar data. 🎜rrreee🎜Dalam kod di atas, kami menggunakan komponen rekursif rekursif Apabila memaparkan setiap nod dalam gelung, gunakan teg <rekursif> untuk memaparkan nod anak secara rekursif. daripada nod semasa. 🎜🎜4 Melipat dan mengembangkan nod🎜🎜Senarai tak terhingga biasanya mempunyai fungsi melipat dan mengembangkan nod Kita perlu menambah atribut isCollapsed pada komponen untuk menunjukkan sama ada nod semasa runtuh dan berdasarkan. pada atribut ini untuk mengawal paparan nod anak. 🎜rrreee🎜Dalam kod di atas, kami menambahkan acara klik pada teg <div> tempat nama nod terletak Apabila diklik, atribut isCollapsed disongsangkan dan digunakan >v-show mengawal paparan nod anak. 🎜🎜5. Ringkasan🎜🎜Melalui contoh di atas, kita boleh memahami tiga langkah utama untuk melaksanakan senarai tak terhingga dalam Vue: reka bentuk struktur data, pembinaan rajah pokok dan paparan senarai. Pada masa yang sama, kami juga memperkenalkan cara menambah fungsi lipatan dan pengembangan nod untuk mencapai kesan interaktif. 🎜🎜Pelaksanaan senarai peringkat tak terhingga ialah kes pembangunan komponen Vue klasik Pemahaman mendalam tentang kes ini boleh membantu meningkatkan kemahiran dan tahap pembangunan Vue, dan juga boleh memberikan rujukan berguna untuk reka bentuk dan pembangunan komponen. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan senarai tak terhingga menggunakan Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menambah fungsi ke butang untuk vue Cara menambah fungsi ke butang untuk vue Apr 08, 2025 am 08:51 AM

Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Cara merujuk fail js dengan vue.js Cara merujuk fail js dengan vue.js Apr 07, 2025 pm 11:27 PM

Terdapat tiga cara untuk merujuk kepada fail JS dalam vue.js: Secara langsung tentukan jalan menggunakan & lt; skrip & gt; tag ;; import dinamik menggunakan cangkuk kitaran hayat yang dipasang (); dan mengimport melalui Perpustakaan Pengurusan Negeri VUEX.

Cara Menggunakan Watch di Vue Cara Menggunakan Watch di Vue Apr 07, 2025 pm 11:36 PM

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Cara kembali ke halaman sebelumnya oleh Vue Cara kembali ke halaman sebelumnya oleh Vue Apr 07, 2025 pm 11:30 PM

Vue.js mempunyai empat kaedah untuk kembali ke halaman sebelumnya: $ router.go (-1) $ router.back () menggunakan & lt; router-link to = & quot;/& quot; Komponen Window.History.Back (), dan pemilihan kaedah bergantung pada tempat kejadian.

Vue menyedari kesan menatal marquee/teks Vue menyedari kesan menatal marquee/teks Apr 07, 2025 pm 10:51 PM

Melaksanakan kesan menatal marquee/teks di VUE, menggunakan animasi CSS atau perpustakaan pihak ketiga. Artikel ini memperkenalkan cara menggunakan animasi CSS: Buat teks tatal dan bungkus teks dengan & lt; div & gt;. Tentukan animasi CSS dan tetapkan limpahan: tersembunyi, lebar, dan animasi. Tentukan frasa key, set Transform: TranslateX () pada permulaan dan akhir animasi. Laraskan sifat animasi seperti tempoh, kelajuan tatal, dan arah.

Cara Menanyakan Versi Vue Cara Menanyakan Versi Vue Apr 07, 2025 pm 11:24 PM

Anda boleh menanyakan versi VUE dengan menggunakan Vue Devtools untuk melihat tab VUE dalam konsol penyemak imbas. Gunakan NPM untuk menjalankan arahan "NPM LIST -G VUE". Cari item VUE dalam objek "Dependencies" fail Package.json. Untuk projek Vue CLI, jalankan perintah "Vue -version". Semak maklumat versi di & lt; skrip & gt; Tag dalam fail HTML yang merujuk kepada fail VUE.

Cara Menggunakan Pagination Vue Cara Menggunakan Pagination Vue Apr 08, 2025 am 06:45 AM

Pagination adalah teknologi yang memisahkan set data besar ke dalam halaman kecil untuk meningkatkan prestasi dan pengalaman pengguna. Di VUE, anda boleh menggunakan kaedah terbina dalam berikut untuk paging: Kirakan jumlah halaman: TotalPages () Traversal Page Number: V-For Directive Untuk menetapkan halaman semasa: CurrentPage Dapatkan data halaman semasa: CurrentPagedata ()

See all articles