Saya mempunyai komponen bekas butang React yang mengembalikan butang biasa, butang ikon atau butang ikon sahaja berdasarkan jenis yang disediakan oleh prop yang digunakan oleh pengguna. Berikut ialah definisi jenis yang berkaitan untukButtonContainer
组件与Props
:
type ButtonWrapperProp = { label?:string; icon?:React.ReactNode; onClick:()=>void; type:'text'|'icon'|'iconOnly'; } export const ButtonContainer = (props: ButtonWrapperProps) => { const { type = 'text', onClick, icon = <>>, label = '', } = props; const rendorButton = () => { switch (type) { case 'text': return (
Begini cara saya menggunakan komponen ButtonContainer:
}/> }/>
Dalam kod di atas, prop ikon adalah pilihan kerana ia hanya digunakan untuk butang ikon dan butang biasa dengan ikon. Saya mahu prop ikon menjadi pilihan hanya jika jenis yang diluluskan daripada ButtonContainer ialah teks dan ia harus menjadi prop yang diperlukan jika jenis yang dihantar kepada ButtonContainer ialah ikon atau iconOnly.
Saya akan memilih untuk menggunakanBezakan Jenis Kesatuan.
Atribut jenis bertindak sebagai diskriminasi, membolehkan anda mengecilkan ButtonWrapperProps kepada ahli kesatuan.
Juga ambil perhatian bahawa saya boleh membuat setiap sifat ahli kesatuan diperlukan, yang memberikan pengalaman yang menarik apabila menggunakannya - TS cukup bijak untuk membayangkan sifat tambahan yang diperlukan selepas jenis ditetapkan.