Компонент Statistic предназначен для
отображения числовых значений с дополнительной информацией, такой как
заголовок, описание или динамическое изменение значения. Он позволяет
создавать информативные панели с ключевыми метриками, например, для
дашбордов или аналитических страниц.
title (string | VNode) –
заголовок статистики. Может быть простым текстом или компонентом Vue для
более сложного оформления.value (number | string) –
отображаемое числовое значение. Значение может быть числом или строкой,
поддерживаются любые форматы.prefix (string | VNode) –
символ или компонент перед значением (например, валютный знак,
иконка).suffix (string | VNode) –
символ или компонент после значения (например, единицы измерения).precision (number) –
количество знаков после запятой при отображении числовых значений.groupSeparator (string) –
символ, используемый для разделения тысяч. По умолчанию запятая.valueStyle (CSSProperties) –
возможность кастомизировать стиль отображения значения.renderValue (Function) –
функция для кастомного рендера значения. Получает value как
аргумент.<template>
<n-statistic title="Продажи за месяц" :value="12345" suffix="₽" />
</template>
<script setup>
import { NStatistic } from 'naive-ui'
</script>
В этом примере отображается число 12345 с заголовком и валютным суффиксом.
Компонент поддерживает локализованное форматирование через свойства
precision и
groupSeparator:
<n-statistic
title="Доход"
:value="1234567.89"
precision="2"
group-separator=" "
suffix="₽"
/>
Результат будет отображаться как 1 234 567.89 ₽, что повышает читаемость больших чисел.
Компонент Statistic интегрируется с
реактивными данными Vue, что позволяет создавать динамические
дашборды:
<template>
<n-statistic
title="Пользователи онлайн"
:value="onlineUsers"
/>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { NStatistic } from 'naive-ui'
const onlineUs ers = ref(0)
onMounted(() => {
setInterval(() => {
onlineUsers.value = Math.floor(Math.random() * 5000)
}, 2000)
})
</script>
Значение onlineUsers обновляется каждые 2 секунды, и компонент автоматически отображает новое число.
Свойство valueStyle позволяет изменять
цвет, шрифт, размер или другие CSS-атрибуты значения:
<n-statistic
title="Доход"
:value="10500"
suffix="₽"
:value-style="{ color: 'green', fontWeight: 'bold', fontSize: '24px' }"
/>
Так можно визуально выделять показатели, например, прибыль положительного значения зеленым цветом.
Statistic поддерживает слоты для более
гибкой кастомизации:
title – для сложного заголовка с
иконками или дополнительной информацией.value – полный контроль над рендером
значения через слот.prefix / suffix – для
вставки элементов перед или после значения.<n-statistic>
<template #title>
<span>Доход <n-icon name="trending-up" /></span>
</template>
<template #value>
<strong>12345 ₽</strong>
</template>
</n-statistic>
С помощью слотов можно интегрировать иконки, стилизованные компоненты и другие визуальные элементы без ограничения стандартных свойств.
Naive UI не имеет встроенной анимации числа, но можно использовать сторонние решения или анимацию через Vue transitions:
<n-statistic :value="animatedValue" />
<script setup>
import { ref, onMounted } from 'vue'
const animatedValue = ref(0)
onMounted(() => {
let value = 0
const interval = setInterval(() => {
value += 100
animatedValue.value = value
if (value >= 5000) clearInterval(interval)
}, 50)
})
</script>
Плавное изменение значения создается за счет реактивного обновления данных.
Компонент наследует тему Naive UI и может использовать
theme-overrides для локального изменения
цветов и шрифтов:
<n-statistic
title="Доход"
:value="12345"
:theme-overrides="{
common: { primaryColor: '#4caf50' },
Statistic: { valueFontSize: '22px' }
}"
/>
Это позволяет создавать визуально согласованные панели с уникальным оформлением под конкретный проект.
Statistic часто комбинируется с
Card, Grid и
другими компонентами Naive UI для построения дашбордов:
<n-card title="Основные показатели">
<n-grid cols="3" :x-gap="20" :y-gap="20">
<n-statistic title="Доход" :value="12000" suffix="₽" />
<n-statistic title="Пользователи" :value="3400" />
<n-statistic title="Конверсии" :value="120" suffix="%" />
</n-grid>
</n-card>
Такой подход обеспечивает компактное и визуально структурированное представление ключевых метрик.
groupSeparator для улучшения
читаемости.precision, чтобы избежать округления
значений.valueStyle и
theme-overrides позволяют сохранять единый
стиль приложения без изменения глобальных настроек.Компонент Statistic в Naive UI —
универсальный инструмент для отображения числовой информации с гибкой
кастомизацией, поддержкой динамики и интеграции в сложные
интерфейсы.