Tất cả component

MotionSwap

Nội dung chuyển mờ chéo trong khi kích thước bám theo.

WebReact NativeNội dung và kích thước

Thử ngay

Đang chuẩn bị ví dụ…

Cách dùng ngắn nhất

SaveButton.jsx
<button onClick={save}>
  <MotionSwap value={status} effect="up">
    {status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
  </MotionSwap>
</button>;

Những gì nó xử lý giúp bạn

  • Phần tử đổi kích thước từ kích thước trên màn hình sang kích thước tự nhiên của nội dung mới, nên nút không bao giờ nhảy.
  • Nội dung cũ mờ đi tại chỗ trong khi nội dung mới hiện ra; không cái nào bị dàn lại trong lúc hoán đổi.
  • Đổi ngược lại giữa lúc hoán đổi sẽ tiếp tục từ những gì đang trên màn hình thay vì chồng thêm bản sao.
  • Children là văn bản thường thì chính là value; với thứ khác hãy truyền value.

Dùng cho

  • Lưu, rồi Đang lưu…, rồi Đã lưu.
  • Khung xương trở thành thẻ hồ sơ.
  • Nút phát trở thành nút tạm dừng.

Props

PropKiểuMặc địnhMô tả
valueunknownDanh tính của nội dung; giá trị mới sẽ hoán đổi. Children là văn bản thường thì chính là danh tính.
childrenReactNodeNội dung.
aselement'span'Phần tử được render.
inlinebooleanas === 'span'true lấy kích thước theo nội dung (nhãn, biểu tượng); false lấp đầy chiều rộng phần tử cha và tạo hoạt ảnh cho chiều cao.
align'start' | 'center' | 'end''center'Vị trí của nội dung trong lúc kích thước thay đổi.
effect'fade' | 'up' | 'down' | 'scale''fade'Cách nội dung vào và ra: up đi lên, down rơi xuống, scale lớn dần.
transitionTransitionspringĐường cong timing { duration, easing } hoặc lò xo { tempo: 'spring', spring }. Lò xo giữ đà khi bị ngắt.
onMotionComplete(value) => voidChạy khi chuyển động dừng hẳn.

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

inline (mặc định khi render dưới dạng span) tạo hoạt ảnh cho chiều rộng và chiều cao; inline={false} lấp đầy chiều rộng phần tử cha và tạo hoạt ảnh cho chiều cao.

Trên React Native, hoán đổi inline đo nội dung mới trên một dòng; hãy dùng inline={false} cho nội dung xuống dòng.

Được dùng trong các ví dụ này

Tìm kiếm

Gõ để tìm trong tài liệu.