- vừa được xem lúc

Xây dựng thành phần Tabs với Tailwind CSS và React

0 0 2

Người đăng: Vũ Tuấn

Theo Viblo Asia

Tabs (thẻ chuyển đổi nội dung) là một mẫu giao diện người dùng (UI) phổ biến để chuyển đổi giữa các vùng nội dung hoặc chế độ xem khác nhau. Với React và Tailwind CSS, việc xây dựng một thành phần tab có khả năng mở rộng và phản hồi tốt trở nên gọn gàng và hiệu quả.

Tại sao nên dùng Tabs?

  • Tổ chức nội dung liên quan trong một không gian gọn gàng
  • Cải thiện khả năng sử dụng mà không cần điều hướng thêm
  • Tránh tải lại trang không cần thiết hoặc chuyển hướng phức tạp

Cấu trúc thành phần

Chúng ta sẽ xây dựng các thành phần sau:

  • Tabs – quản lý trạng thái tab đang hoạt động
  • TabList – vùng chứa các nút tab
  • Tab – một tab có thể nhấp được
  • TabPanels – vùng chứa nội dung của các tab
  • TabPanel – nội dung riêng của từng tab

Tệp Tabs.js

import { useState, createContext, useContext } from 'react' const TabsContext = createContext() export function Tabs({ children, defaultIndex = 0 }) { const [activeIndex, setActiveIndex] = useState(defaultIndex) return ( <TabsContext.Provider value={{ activeIndex, setActiveIndex }}> <div>{children}</div> </TabsContext.Provider> )
} export function TabList({ children }) { return <div className="flex border-b">{children}</div>
} export function Tab({ index, children }) { const { activeIndex, setActiveIndex } = useContext(TabsContext) const isActive = index === activeIndex return ( <button onClick={() => setActiveIndex(index)} className={`px-4 py-2 -mb-px border-b-2 transition-colors ${ isActive ? 'border-indigo-500 text-indigo-600 font-medium' : 'border-transparent text-gray-500 hover:text-gray-700' }`} > {children} </button> )
} export function TabPanels({ children }) { const { activeIndex } = useContext(TabsContext) return <div className="p-4">{children[activeIndex]}</div>
} export function TabPanel({ children }) { return <div>{children}</div>
}

Ví dụ sử dụng

import { Tabs, TabList, Tab, TabPanels, TabPanel,
} from './Tabs' function App() { return ( <div className="max-w-xl mx-auto mt-10"> <Tabs defaultIndex={0}> <TabList> <Tab index={0}>Overview</Tab> <Tab index={1}>Pricing</Tab> <Tab index={2}>Reviews</Tab> </TabList> <TabPanels> <TabPanel> <p>Welcome to the overview section.</p> </TabPanel> <TabPanel> <p>Check out our competitive pricing.</p> </TabPanel> <TabPanel> <p>Read customer reviews here.</p> </TabPanel> </TabPanels> </Tabs> </div> )
}

Mẹo Styling với Tailwind

  • Sử dụng border-b-mb-px để tạo hiệu ứng gạch chân chuyển động
  • Tô sáng tab đang chọn bằng font-medium và tiện ích màu
  • Thêm hiệu ứng transition để chuyển tab mượt mà

Nâng cấp thêm

  • Hỗ trợ bàn phím với phím ArrowLeftArrowRight
  • Thêm hoạt ảnh chuyển đổi nội dung tab bằng thư viện framer-motion
  • Tải nội dung tab theo nhu cầu (lazy-loading) để tăng hiệu suất
  • Đồng bộ trạng thái tab với URL để có thể chia sẻ liên kết

Tóm lược

Việc xây dựng thành phần tab với Tailwind CSS và React Context giúp mã nguồn gọn gàng, có tổ chức và dễ mở rộng. Cách tiếp cận này tách biệt các chức năng, đồng thời cung cấp khả năng kiểm soát cao về giao diện và hành vi của thành phần.

Bình luận

Bài viết tương tự

- vừa được xem lúc

The Twelve-Factor App, cẩm nang gối đầu giường trong xây dựng application (Phần 1)

Giới thiệu. Ngày nay các phần mềm được triển khai dưới dạng các dịch vụ, chúng được gọi là các web apps hay software-as-a-service (SaaS).

0 0 47

- vừa được xem lúc

8 Sai lầm phổ biến khi lập trình Android

1. Hard code.

0 0 207

- vừa được xem lúc

Popular interview question: What is the difference between Process and Thread? 10 seconds a day

Video được đăng tại channel Tips Javascript

0 0 45

- vừa được xem lúc

Thuật toán và ứng dụng - P1

Mục đích series. . Những bài toán gắn liền với thực tế. Từ đó thấy được tầm quan trọng của thuật toán trong lập trình.

0 0 48

- vừa được xem lúc

Tác dụng của Docker trong quá trình học tập

Docker bây giờ gần như là kiến thức bắt buộc đối với các anh em Dev và Devops, nhưng mà đối với sinh viên IT nói chung vẫn còn khá mơ hồ và không biết tác dụng thực tế của nó. Hôm nay mình sẽ chia sẻ

0 0 55

- vừa được xem lúc

Làm giàu trong ngành IT

Hầu như mọi người đều đi làm để kiếm tiền, ít người đi làm vì thấy cái nghề đó thú vị lắm. Bây giờ vất cho mình 100 tỷ bảo mình bỏ nghề thì mình cũng bỏ thôi.

0 0 58