В Element Plus входные параметры компонентов
(props) служат основным способом передачи данных и
конфигурации от родительского компонента к дочернему. Они позволяют
контролировать состояние компонентов, задавать начальные значения и
обеспечивают реактивность интерфейса.
Для любого компонента Element Plus можно определить
список props в объекте props:
export default {
props: {
visible: {
type: Boolean,
default: false
},
title: {
type: String,
required: true
},
size: {
type: String,
default: 'medium',
validator: value => ['small', 'medium', 'large'].includes(value)
}
}
}
Ключевые моменты:
true или false в зависимости от допустимости
значения.Element Plus поддерживает все стандартные типы Jav * aScript:
String — текстовые значения.Number — числовые параметры.Boolean — логические флаги, например, видимость
модального окна.Array — массивы для списка данных.Object — объекты для сложной конфигурации.Function — колбэки и обработчики событий.Symbol — редко используемый тип, но полностью
поддерживаемый.Props в Element Plus реактивны, что позволяет обновлять компонент при изменении значения родителем:
{{ label }}
Если родитель изменит buttonType, кнопка автоматически
изменит свой стиль. Это особенно полезно для таких компонентов, как
ElTable, ElForm и ElDialog.
Для компонентов, требующих настройки множества параметров, props часто используют с объектами:
Контент модального окна
Важно: при использовании объектов или массивов значение по умолчанию должно задаваться через функцию, чтобы избежать общих ссылок между экземплярами компонента.
Element Plus позволяет задавать пользовательские функции проверки:
props: {
size: {
type: String,
default: 'medium',
validator: value => ['small', 'medium', 'large'].includes(value)
}
}
Невалидные значения будут проигнорированы Vue, что предотвращает некорректное поведение компонентов.
Некоторые компоненты Element Plus используют синтаксис
.sync для двустороннего связывания состояния:
Текст диалога
При изменении видимости диалога внутри компонента автоматически
обновится переменная isDialogOpen в родителе.
v-model или :value.options.columns.type.type для каждого prop — это повышает
читаемость и предотвращает ошибки.default.validator для ограничений допустимых
значений.visible) предпочтителен синтаксис
.sync.props: {
simpleProp: String,
requiredProp: {
type: Number,
required: true
},
defaultProp: {
type: Boolean,
default: false
},
validatedProp: {
type: String,
validator: val => ['one', 'two', 'three'].includes(val)
},
objectProp: {
type: Object,
default: () => ({ key: 'value' })
}
}
Эта структура позволяет создавать гибкие, реактивные и безопасные компоненты с полным контролем над входными параметрами.