В Preact, как и в других современных фреймворках для построения пользовательских интерфейсов на JavaScript, значения по умолчанию играют ключевую роль в обеспечении предсказуемого поведения компонентов и упрощении их конфигурации. Значения по умолчанию позволяют компонентам корректно работать даже в случае отсутствия определённых пропсов, предотвращая ошибки и упрощая разработку.
Каждый компонент Preact может принимать пропсы — объекты, содержащие параметры, которые влияют на рендеринг компонента. Если значение пропса не передано, компонент может использовать заранее определённое значение по умолчанию.
import { h } from 'preact';
function Button({ label = 'Click me', type = 'button' }) {
return <button type={type}>{label}</button>;
}
В этом примере:
label имеет значение 'Click me' по
умолчанию;type принимает 'button', если явно не
указано иное.Использование значений по умолчанию через деструктуризацию объектов является наиболее распространённым и удобным способом в Preact.
defaultProps как
альтернативаХотя Preact минималистичен по сравнению с React, он также
поддерживает свойство defaultProps для функциональных и
классовых компонентов. Оно определяет стандартные значения пропсов на
уровне самого компонента.
import { h, Component } from 'preact';
class Input extends Component {
render() {
return <input type={this.props.type} placeholder={this.props.placeholder} />;
}
}
Input.defaultProps = {
type: 'text',
placeholder: 'Введите текст'
};
Особенности использования defaultProps:
defaultProps подставляются только при
отсутствии переданного пропса.defaultProps
игнорируется.Значения по умолчанию полезны не только для пропсов, но и для локального состояния компонента. При инициализации состояния можно задавать стартовые значения, что позволяет компоненту корректно функционировать без внешних данных.
import { h } from 'preact';
import { useState } from 'preact/hooks';
function Counter({ initialCount = 0 }) {
const [count, setCount] = useState(initialCount);
return (
<div>
<p>Счётчик: {count}</p>
<button onCl ick={() => setCount(count + 1)}>Увеличить</button>
</div>
);
}
Здесь initialCount определяет начальное состояние
счётчика. Если пропс не передан, значение по умолчанию 0
гарантирует корректную работу компонента.
Для более сложных структур, таких как объекты или массивы, значения по умолчанию могут быть заданы непосредственно в деструктуризации пропсов:
function Card({ options: { width = 300, height = 200, color = 'white' } = {} }) {
return <div style={{ width, height, backgroundColor: color }}>Контент карточки</div>;
}
Особенности:
{} после = защищает от
ошибки, если options не передан.Использование значений по умолчанию снижает вероятность возникновения
undefined или null в JSX и стилях. В Preact
это особенно важно, так как минимализм фреймворка оставляет разработчику
ответственность за корректность данных. Для дополнительной безопасности
можно комбинировать значения по умолчанию с проверкой типов через
TypeScript или PropTypes.
import { h } from 'preact';
import PropTypes from 'prop-types';
function Badge({ text = 'New', color = 'blue' }) {
return <span style={{ backgroundColor: color }}>{text}</span>;
}
Badge.propTypes = {
text: PropTypes.string,
color: PropTypes.string
};
Применение PropTypes вместе с дефолтными значениями
обеспечивает:
defaultProps для классовых
компонентов, особенно если проект включает старый код.Значения по умолчанию в Preact — это не просто удобство, а фундаментальная часть архитектуры компонентов. Они упрощают управление состоянием, предотвращают ошибки и делают код более читаемым и предсказуемым.