Naive UI предоставляет гибкий компонент
NProgress для визуализации прогресса выполнения операций.
Линейный индикатор используется для отображения процентного выполнения
задач, загрузки данных или любой другой прогресс-метрики.
import { createApp, ref } from 'vue';
import { NProgress } from 'naive-ui';
const app = createApp({
setup() {
const progress = ref(0);
return { progress };
},
template: `
<n-progress v-model:percentage="progress" show-value />
<button @click="progress += 10">Увеличить</button>
`
});
app.mount('#app');
Ключевые моменты:
v-model:percentage связывает текущий процент прогресса
с реактивной переменной.show-value отображает численное значение прогресса
прямо на индикаторе.percentage — число от 0 до 100, определяет текущий
прогресс.show-value — булевое значение, показывает или скрывает
текст с процентом.status — определяет визуальное состояние:
'default' | 'success' | 'error' | 'warning'.stroke-height — высота линии прогресса в пикселях.color — кастомный цвет прогресс-бара. Может быть
строкой цвета или функцией, возвращающей цвет в зависимости от
процента.processing — булевое значение, активирует анимацию
“бегущей линии”.<NProgress
v-model:percentage="progress"
:color="(percentage) => {
if (percentage < 50) return 'red';
if (percentage < 80) return 'orange';
return 'green';
}"
/>
В данном примере цвет линии меняется динамически в зависимости от процента выполнения задачи.
<NProgress v-model:percentage="progress" status="success" />
<NProgress v-model:percentage="progress" status="error" />
<NProgress v-model:percentage="progress" status="warning" />
success — зеленый прогресс для успешного
завершения.error — красный, сигнализирует о проблеме.warning — оранжевый, предупреждает о потенциальной
ошибке.default — стандартный синий индикатор.processing активирует непрерывную анимацию, полезную
для неопределенных процессов.stroke-linecap позволяет менять стиль окончания линии:
'round' или 'butt'.import { ref, onMounted } from 'vue';
import { NProgress } from 'naive-ui';
export default {
setup() {
const progress = ref(0);
const simulateProgress = () => {
const interval = setInterval(() => {
if (progress.value >= 100) {
clearInterval(interval);
} else {
progress.value += 5;
}
}, 200);
};
onMounted(simulateProgress);
return { progress };
},
template: `<n-progress v-model:percentage="progress" show-value />`
};
Этот пример демонстрирует постепенное увеличение прогресса с
имитацией загрузки данных. Использование реактивной переменной
progress позволяет легко интегрировать индикатор с
API-запросами или любыми асинхронными процессами.
stroke-height позволяет задать толщину
прогресс-бара, например 4 или 8.Линейный NProgress часто используют вместе с
NButton для запуска действий, с NForm для
отображения загрузки форм, или с NCard для визуализации
состояния внутри карточек. Возможна интеграция с Vue Transition для
плавного появления и исчезновения прогресс-бара.
success, error,
warning.Использование NProgress обеспечивает гибкий и визуально
приятный способ информирования пользователей о ходе выполнения
процессов.