ProgressBar** (thanh tiến trình) thông báo cho người dùng biết rằng nội dung đang được tải. Thường dùng khi gửi request lên server và chờ phản hồi.
Cài đặt
npm install react-native-paper
(Không cần --save-dev vì đây là dependency chạy production)
Import component
import { ProgressBar } from 'react-native-paper';
Cú pháp cơ bản
<ProgressBar progress={0.5} color="#00BCD4" />
Các props chính
| Prop | Kiểu | Mô tả |
|---|---|---|
progress | number (0-1) | Giá trị tiến trình (0 = 0%, 1 = 100%). |
color | string | Màu thanh tiến trình. |
visible | boolean | Hiển thị/ẩn thanh tiến trình. |
style | object | Style tùy chỉnh. |
indeterminate | boolean | Chế độ không xác định (loading xoay vòng). |
Ví dụ: ProgressBar cơ bản
import * as React from 'react';
import { ProgressBar } from 'react-native-paper';
const MyComponent = () => (
);
export default MyComponent;
Ví dụ nâng cao: Tự động tăng tiến trình
import * as React from 'react';
import { View, StyleSheet } from 'react-native';
import { ProgressBar, Button } from 'react-native-paper';
const App = () => {
const [progress, setProgress] = React.useState(0);
const [loading, setLoading] = React.useState(false);
const startLoading = () => {
setLoading(true);
setProgress(0);
const interval = setInterval(() => {
setProgress(p => {
if (p >= 1) {
clearInterval(interval);
setLoading(false);
return 1;
}
return p + 0.1;
});
}, 500);
};
return (
);
};
const styles = StyleSheet.create({
container: { flex: 1, justifyContent: 'center', padding: 20 },
});
export default App;
Lưu ý
-
Giá trị
- Kết hợp với
indeterminate={true}cho loading không xác định thời gian. - Để dùng trên iOS, nhớ chạy
npx pod-installsau khi cài package.
progress nhận từ 0 đến 1 (không phải 0-10 như tài liệu gốc nhầm).