Библиотека Slim.js предоставляет механизмы для компактного объявления свойств компонента и определения поведения при отсутствии входных данных. Значения по умолчанию позволяют стабилизировать состояние компонента, снизить количество проверок внутри шаблона и обеспечить предсказуемость рендера при динамических изменениях.
propsСвойства компонента объявляются в статическом поле
props. Для каждого свойства может быть указан тип,
наблюдаемость и значение по умолчанию. Пример типичного объявления:
static props = {
count: { type: Number, default: 0 },
label: { type: String, default: 'Пусто' },
active: { type: Boolean, default: false }
};
Ключевой элемент — default. Если родительский компонент
или внешний код не передал значение для count, Slim.js
подставит 0. Такое решение избавляет от многословных
проверок на undefined во время рендера.
При работе со сложными структурами данных предпочтительно использовать функцию, возвращающую новое значение при каждом создании экземпляра. Это исключает разделение состояния между компонентами.
static props = {
items: {
type: Array,
default: () => []
}
};
Выделяется важный момент: если использовать массив напрямую
(default: []), он будет общим для всех экземпляров
компонента, что приведёт к нежелательному совместному состоянию.
Slim.js автоматически преобразует типы и подставляет значения, поэтому в шаблоне свойства уже считаются заполненными. Выражения становятся короче:
<div>{{ label }}: {{ count }}</div>
Отсутствие необходимости проверять label || 'Пусто'
делает шаблоны лаконичнее и проще для анализа при изменении логики.
Значения по умолчанию используются лишь при отсутствии внешнего атрибута. Если атрибут передан, Slim.js выполнит преобразование типа (если оно указано) и заменит дефолт. Это служит удобным механизмом перекрытия параметров без дополнительного кода.
При передаче пустой строки в строковые свойства сработает именно
пустая строка. Для булевых свойств достаточно присутствия атрибута без
значения, чтобы свойство стало истинным, независимо от
default.
Дефолт хранится так же, как и обычное свойство. При изменении оно
участвует в реактивном обновлении, что позволяет строить логику
исключительно за счёт свойств компонента без скрытых состояний.
Например, изменение count по кнопке обновит отображение
автоматически, даже если значение было первоначально выставлено по
умолчанию.
В компонентах с публичным API значения по умолчанию играют роль первоначальной конфигурации. Например, компонент списка может предусмотреть базовый размер страницы, сортировку или тип фильтра. Создание предсказуемых значений устраняет необходимость задавать атрибуты при каждом использовании и делает компоненты самодостаточными.
Статические значения подходят для простых типов. В случаях, когда значение зависит от внешних условий, используется функция. Внутри неё допускается доступ к глобальному окружению, константам или сервисам. Например, конфигурирование по локали или настройкам приложения выполняется ещё до инициализации компонента.
static props = {
locale: { default: () => window.appLocale }
};
Подобный приём позволяет компонента переключаться между конфигурациями без передачи большого числа параметров через атрибуты.
Помимо стандартных типов Slim.js разрешает использование пользовательских конвертеров, которые отвечают за трансформацию входного значения. Значение по умолчанию в таком случае служит эталоном структуры. Например, если компонент ожидает объект конфигурации, дефолт может быть минимальным описанием этого объекта, а внешние атрибуты будут дополнять его.
static props = {
config: {
type: Object,
default: () => ({ theme: 'light', size: 'md' })
}
};
undefined и nullSlim.js различает отсутствие значения и намеренное присвоение
null. Значение по умолчанию срабатывает только при
undefined. Это обеспечивает аккуратное моделирование
состояния: если компонент получил null, значит внешний код
сознательно обнулил свойство и дефолт уже не должен вмешиваться.
Значения по умолчанию упрощают тестирование и отладку. Компонент можно создавать в минимальной конфигурации, наблюдать его реактивность и постепенно добавлять параметры. Это делает Slim.js удобным в образовательном и промышленном использовании, сокращая усилия на подготовку окружения.
При композиции компонентов дефолты проявляют особую пользу. Вложенный компонент способен полноценно функционировать даже при отсутствии части переданных параметров. Это свойство позволяет строить более сложные интерфейсные блоки, не заботясь на каждом уровне о проверках на пустоту.
Чаще всего значения по умолчанию используются для числовых счётчиков, заголовков, состояний переключателей, конфигурационных объектов и коллекций. В более сложных системах они выступают в роли первичного состояния машины или интерфейса, задавая начальные параметры, которые позже изменяются реактивно.
Такой механизм в Slim.js снижает порог вхождения, делает компоненты предсказуемыми и предотвращает появление скрытых ошибок, возникающих при неопределённых данных.