Menjana reka letak dinamik dalam Vue menggunakan komponen rekursif

Susan Sarandon
Lepaskan: 2024-10-05 06:20:02
asal
229 orang telah melayarinya

Inspirasi untuk artikel ini datang daripada pelaksanaan terbaru yang saya lakukan untuk membina reka letak dinamik pada bahagian hadapan berasaskan Vue.

Anggapkan titik akhir API anda mengembalikan reka letak YAML seperti di bawah.


---
row:
  - col: 12
    row:
      - col: 12
        component_id: 1
  - col: 12
    row:
      - col: 6
        component_id: 2
      - col: 6
        row:
          - col: 12
            component_id: 3
          - col: 12
            component_id: 4


Salin selepas log masuk

Kami menjangkakan reka letak seperti di bawah daripada ungkapan YAML ini.

Generating dynamic layouts in Vue using recursive components

Jadi, ini memudahkan untuk digunakan, kami akan menghuraikan struktur YAML ini dan menjana objek JSON. Saya menggunakan pakej yaml.


npm install yaml



Salin selepas log masuk

Kemudian, kita boleh mengimportnya dan menjalankan parser.


import YAML from 'yaml'
const jsonObject = YAML.parse(yaml_struct)


Salin selepas log masuk

Untuk membuat ini berfungsi, kita perlu mencipta templat Vue rekursif dan komponen yang boleh memanggil dirinya secara rekursif apabila menemui baris bersarang. Dengan cara ini, struktur akan mengendalikan reka letak bersarang dalam secara dinamik seperti yang saya sediakan.


<template>
    <v-row>
        <template v-for="col in row">
            <v-col :cols="col.col">
                <template v-if="col.component_id">
                    <ComponentWantToRender :col="col"></ComponentWantToRender>
                </template>

                <template v-if="col.row">
                    <RecursiveRow :row="col.row"></RecursiveRow>
                </template>
            </v-col>
        </template>
    </v-row>
</template>

<script setup>
import { defineProps } from 'vue';
import RecursiveRow from './RecursiveRow.vue';
defineProps({
    row: Array,
});
</script>


Salin selepas log masuk

Kini, kami boleh menggunakan komponen RecursiveRow ini di dalam komponen induk anda untuk mengendalikan reka letak peringkat teratas.


<template>
  <RecursiveRow :row="jsonObject"></RecursiveRow>
</template>

<script setup>
import RecursiveRow from './RecursiveRow.vue';

defineProps({
  jsonObject: Array,
});
</script>


Salin selepas log masuk

Itu sahaja. Jika anda mempunyai sebarang soalan, sila tinggalkan komen di bawah.

Atas ialah kandungan terperinci Menjana reka letak dinamik dalam Vue menggunakan komponen rekursif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan