Jangan Bergantung pada Nilai Atribut Lalai Untuk Menggayakan Komponen Web

Linda Hamilton
Lepaskan: 2024-11-17 10:03:03
asal
469 orang telah melayarinya

Jangan salah faham, saya tidak mempunyai apa-apa yang bertentangan dengan nilai lalai untuk API komponen web. Masalah saya dengan mereka ialah mereka tidak boleh dipercayai.

Masalahnya

Pendekatan biasa untuk menyediakan senarai pilihan yang tersedia untuk API adalah menggunakan jenis gabungan TypeScript.

/** The display variant for the button */
@property({reflect: true})
variant: 'default' | 'solid' | 'ghost' = 'default';
Salin selepas log masuk

Berikut ialah beberapa CSS asas untuk membuat variasi berfungsi.

:host {
  --accent-color: #0265dc;
}

button {
  cursor: pointer;
  padding: 0.5rem;
}

:host([variant='default']) button {
  border: solid 1px var(--accent-color);
  background-color: white;
  color: var(--accent-color);
}

:host([variant='solid']) button {
  border: solid 1px var(--accent-color);
  background-color: var(--accent-color);
  color: white;
}

:host([variant='ghost']) button {
  border: solid 1px transparent;
  background-color: transparent;
  color: var(--accent-color);
}
Salin selepas log masuk

NOTA: Contoh kod menggunakan Lit, tetapi prinsip yang dibincangkan di sini boleh digunakan dengan mudah pada perpustakaan dan rangka kerja lain.

Cabarannya ialah elemen tersuai/komponen web boleh digunakan di mana-mana sahaja. Ia boleh disisipkan dalam DOM dalam rentetan, dalam bahasa sebelah pelayan seperti PHP, ia boleh dibuat dalam fungsi createElement JavaScript, atau bahkan dalam HTML standard. Apa yang saya dapat ialah tidak selalu ada cara "jenis-selamat" untuk memastikan atribut elemen tersuai ditetapkan dengan tepat. Oleh sebab itu, salah satu item dalam senarai semak PR perpustakaan komponen kami ialah:

✅ Atribut dan sifat berfungsi apabila ditetapkan, dinyahtetapkan dan ditetapkan dengan buruk.

Menguji API Kami

Memandangkan garis panduan ini, mari kita uji persediaan API di atas.

  • Set - semuanya kelihatan baik.
<my-button variant="default">Default Button</my-button>
<my-button variant="solid">Solid Button</my-button>
<my-button variant="ghost">My Button</my-button>
Salin selepas log masuk

Don

  • Nyahtetapkan
    • tanpa set atribut ia berfungsi dengan baik kerana kami mempunyai nilai lalai dan ia dikonfigurasikan untuk mencerminkan atribut pada elemen apabila ia ditetapkan.
    • jika kita menetapkan sifat varian kepada tidak ditentukan, ia memecahkan gaya.
<!-- No attribute set -->
<my-button>No Attribute Button</my-button>

<!-- JSX example -->
<my-button variant={undefined}>Unset Button</my-button>
Salin selepas log masuk

Don

  • Ditetapkan dengan buruk - apabila kami menetapkan atribut varian kepada "sampah" ia juga akan rosak.
<my-button variant="rubbish">Rubbish Button</my-button>
Salin selepas log masuk

Don

Anda boleh menguji contoh ini di sini:

Don

Membetulkan API

Cara paling mudah untuk membetulkannya ialah menjadikan gaya elemen butang sepadan dengan gaya lalai.

button {
  border: solid 1px var(--accent-color);
  background-color: white;
  color: var(--accent-color);
  cursor: pointer;
  padding: 0.5rem;
}
Salin selepas log masuk

Kini kita boleh mengalih keluar kod untuk variasi lalai.

/* We can remove this */
:host([variant='default']) button {
  border: solid 1px var(--accent-color);
  background-color: white;
  color: var(--accent-color);
}
Salin selepas log masuk

Untuk mengelakkan kekeliruan, anda boleh meninggalkan gaya dan menambah ulasan.

/* Styles for this variant are under the `button` element */
:host([variant='default']) { }
Salin selepas log masuk

Mari kita juga mengemas kini TypeScript API untuk menjadikannya pilihan dan mengalih keluar nilai lalai.

/** The display variant for the button */
@property({ reflect: true })
variant?: 'default' | 'solid' | 'ghost';
Salin selepas log masuk

Elemen kini berkelakuan secara konsisten jika nilai ditetapkan, tidak ditetapkan atau ditetapkan dengan buruk!

Don

Anda boleh melihat kod akhir di sini:

Don

Kesimpulan

Dengan mengalih keluar pergantungan pada nilai lalai, anda boleh mencipta API komponen web yang lebih berdaya tahan. Jika anda mesti mempunyai nilai lalai untuk komponen anda berfungsi dengan baik, pastikan anda menyemak artikel ini untuk mencipta komponen web yang berfungsi secara konsisten.

Atas ialah kandungan terperinci Jangan Bergantung pada Nilai Atribut Lalai Untuk Menggayakan Komponen Web. 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