MotionHighlight
Tab, điều khiển phân đoạn hoặc điều hướng từ dữ liệu, với một điểm nhấn di chuyển đến lựa chọn.
WebReact NativeLựa chọn và phân trang
Thử ngay
Đang chuẩn bị ví dụ…
Cách dùng ngắn nhất
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;Những gì nó xử lý giúp bạn
- Một điểm nhấn di chuyển và đổi kích thước giữa các mục; tạo kiểu bằng
highlightClassName. - Mục đến từ
items, key từgetKeyvà nhãn từrenderItem. hoverkhiến nó bám theo con trỏ và quay về lựa chọn.- Các mục có thể xuống nhiều hàng và điểm nhấn đi theo.
- Việc tải phông chữ và thay đổi bố cục được tự động đo lại.
Dùng cho
- Tab trang.
- Thanh bộ lọc.
- Điều khiển phân đoạn trong biểu mẫu cài đặt.
Props
| Prop | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
items | readonly T[] | —bắt buộc | Mảng dữ liệu của bạn. |
value | key | null | —bắt buộc | Key của mục được nhấn mạnh; null ẩn điểm nhấn. |
onValueChange | (key, item) => void | Chạy với key và mục khi một mục được nhấn. | |
getKey | (item) => string | number | item.id | Trả về key duy nhất, ổn định cho một mục. Mặc định là item.id, hoặc chính mục đó với chuỗi và số. |
renderItem | (item, { selected, index }) => ReactNode | item.label | Vẽ một mục; nhận thông tin mục đó có được chọn hay không. |
hover | boolean | false | Bám theo con trỏ trên các mục và quay về value khi rời đi (web). |
itemAs | element | 'button' | Phần tử cho từng mục. |
itemClassName | string | Class cho từng phần tử mục; itemStyle đặt style nội tuyến của nó. | |
highlightClassName | string | Class cho điểm nhấn; highlightStyle đặt style nội tuyến của nó. | |
transition | Transition | spring | Đường cong timing { duration, easing } hoặc lò xo { tempo: 'spring', spring }. Lò xo giữ đà khi bị ngắt. |
Các props khác được chuyển tới phần tử được render, nên className, style và trình xử lý sự kiện hoạt động như bình thường.
Web và React Native
Mỗi mục mặc định được render thành button (itemAs để đổi); nhấn vào sẽ gọi onValueChange(key, item).
Trên React Native, các mục là Pressable; vị trí chạy bằng native driver và kích thước trên một view lồng do JavaScript điều khiển.