<Disclosure> เป็นส่วนประกอบ (component) ที่มีประโยชน์มากใน React ช่วยให้คุณสร้างส่วนของ UI ที่สามารถเปิดและปิดได้ เช่น เมนูแบบ dropdown, accordion, หรือ panel ต่างๆ โดยมีการควบคุมสถานะการเปิด-ปิดอย่างชัดเจน

ทำไมต้องใช้ <Disclosure>?

  • ง่ายต่อการใช้งาน: มี API ที่เข้าใจง่าย ทำให้คุณสร้างส่วนประกอบที่ซับซ้อนได้อย่างรวดเร็ว
  • มีสถานะที่ชัดเจน: คุณสามารถควบคุมสถานะการเปิด-ปิดของส่วนประกอบได้อย่างง่ายดาย
  • ปรับแต่งได้: คุณสามารถปรับแต่งรูปแบบและฟังก์ชันการทำงานของส่วนประกอบได้ตามต้องการ
  • Accessibility: <Disclosure> มักถูกออกแบบมาให้เข้าถึงได้ (accessible) เพื่อให้ผู้ใช้ทุกคนสามารถใช้งานได้

โครงสร้างพื้นฐานของ <Disclosure>

โดยทั่วไป <Disclosure> จะประกอบด้วยส่วนประกอบย่อยหลัก 2 ส่วน คือ:

  • <Disclosure.Button> : เป็นปุ่มที่เมื่อคลิกแล้วจะเปิดหรือปิดส่วนประกอบ
  • <Disclosure.Panel> : เป็นส่วนของเนื้อหาที่ซ่อนอยู่ และจะแสดงเมื่อเปิด <Disclosure>

ตัวอย่างการใช้งาน

import { Disclosure } from '@headlessui/react'

function MyComponent() {
  return (
    <Disclosure>
      {({ open }) => (
        <>
          <Disclosure.Button>
            <span>Toggle</span>
            <span className="sr-only">open menu</span>
          </Disclosure.Button>
          <Disclosure.Panel>
            <p>This is the hidden content.</p>
          </Disclosure.Panel>
        </>
      )}
    </Disclosure>
  )
}

การทำงานของโค้ด

  1. นำเข้า <Disclosure> : นำเข้าส่วนประกอบ <Disclosure> จากไลบรารี @headlessui/react
  2. สร้าง <Disclosure> : สร้างองค์ประกอบ <Disclosure>
  3. ใช้ render props : ภายใน <Disclosure> เราจะใช้ render props เพื่อรับค่า open ซึ่งจะเป็น true เมื่อส่วนประกอบถูกเปิด และเป็น false เมื่อส่วนประกอบถูกปิด
  4. <Disclosure.Button> : สร้างปุ่มที่เมื่อคลิกแล้วจะเปลี่ยนค่าของ open
  5. <Disclosure.Panel> : สร้างส่วนของเนื้อหาที่ซ่อนอยู่ และจะแสดงเมื่อ open มีค่าเป็น true

การปรับแต่งเพิ่มเติม

  • เพิ่มไอคอน: คุณสามารถเพิ่มไอคอนเข้าไปใน <Disclosure.Button> เพื่อบ่งบอกสถานะการเปิด-ปิด
  • เพิ่มคลาส CSS: คุณสามารถเพิ่มคลาส CSS เพื่อปรับแต่งสไตล์ของส่วนประกอบ
  • เพิ่ม animation: คุณสามารถเพิ่ม animation เพื่อให้การเปิด-ปิดของส่วนประกอบดูเป็นธรรมชาติมากขึ้น
  • ควบคุมสถานะจากภายนอก: คุณสามารถควบคุมสถานะการเปิด-ปิดของ <Disclosure> จากภายนอกได้โดยใช้ state management

สรุป

<Disclosure> เป็นเครื่องมือที่มีประโยชน์มากสำหรับการสร้างส่วนประกอบแบบ interactive ใน React โดยเฉพาะส่วนประกอบที่ต้องการการเปิด-ปิด เช่น เมนู dropdown, accordion, หรือ panel ต่างๆ การเรียนรู้วิธีการใช้งาน <Disclosure> จะช่วยให้คุณสร้าง UI ที่มีความยืดหยุ่นและใช้งานง่ายมากยิ่งขึ้น

หมายเหตุ: เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ควรศึกษาเอกสารประกอบของไลบรารี @headlessui/react เพิ่มเติม

คำสำคัญ: <Disclosure>, React, component, UI, dropdown, accordion, panel, state, render props, accessibility

Program & Tools
Thank You for All Sources