В библиотеке Ant Design (AntD) шаблоны играют ключевую роль при организации интерфейсов, обеспечивая повторное использование компонентов и единообразие визуального стиля. Шаблон — это структурная единица, которая объединяет компоненты, стили и логику для формирования комплексного блока интерфейса.
В React шаблоны в AntD реализуются через комбинацию Layout, Grid и высокоуровневых компонентов, таких как Form, Table, Card и Menu. Их использование позволяет создавать приложения, где визуальная и функциональная согласованность достигается без дублирования кода.
Компонент Layout является основой для построения шаблонов в AntD. Он предоставляет набор вложенных структурных компонентов:
Пример базового шаблона:
import { Layout, Menu } from 'antd';
const { Header, Sider, Content, Footer } = Layout;
function AppLayout() {
return (
<Layout style={{ minHeight: '100vh' }}>
<Sider>
<Menu theme="dark" mode="inline">
<Menu.Item key="1">Главная</Menu.Item>
<Menu.Item key="2">Профиль</Menu.Item>
</Menu>
</Sider>
<Layout>
<Header style={{ background: '#fff', padding: 0 }}>Заголовок</Header>
<Content style={{ margin: '16px' }}>
Основной контент
</Content>
<Footer style={{ textAlign: 'center' }}>© 2026 Приложение</Footer>
</Layout>
</Layout>
);
}
В этом примере структура шаблона разделена на боковую панель и основной контент, что позволяет повторно использовать Sider и Header на всех страницах приложения.
Grid-система AntD обеспечивает адаптивное размещение элементов внутри шаблонов. Основные компоненты:
Пример создания карточек с равномерным распределением:
import { Row, Col, Card } from 'antd';
function CardGrid() {
return (
<Row gutter={[16, 16]}>
<Col span={8}>
<Card title="Карточка 1">Содержимое 1</Card>
</Col>
<Col span={8}>
<Card title="Карточка 2">Содержимое 2</Card>
</Col>
<Col span={8}>
<Card title="Карточка 3">Содержимое 3</Card>
</Col>
</Row>
);
}
Gutter управляет отступами между колонками, что делает шаблон гибким и аккуратным на разных экранах.
Формы в AntD строятся с помощью компонента Form. Они могут выступать в роли повторяемых шаблонов для ввода данных:
import { Form, Input, Button } from 'antd';
function UserForm() {
const [form] = Form.useForm();
const onFin ish = (values) => {
console.log('Данные формы:', values);
};
return (
<Form form={form} layout="vertical" onFin ish={onFinish}>
<Form.Item name="username" label="Имя пользователя" rules={[{ required: true }]}>
<Input placeholder="Введите имя" />
</Form.Item>
<Form.Item name="email" label="Email" rules={[{ required: true, type: 'email' }]}>
<Input placeholder="Введите email" />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">Отправить</Button>
</Form.Item>
</Form>
);
}
Использование шаблонов форм позволяет стандартизировать сбор данных и минимизировать повторение кода для разных страниц.
Table и List предоставляют гибкие средства для отображения табличных данных и списков:
import { Table } from 'antd';
const dataSource = [
{ key: '1', name: 'Иван', age: 28, address: 'Москва' },
{ key: '2', name: 'Мария', age: 22, address: 'Санкт-Петербург' }
];
const columns = [
{ title: 'Имя', dataIndex: 'name', key: 'name' },
{ title: 'Возраст', dataIndex: 'age', key: 'age' },
{ title: 'Адрес', dataIndex: 'address', key: 'address' }
];
function UserTable() {
return <Table dataSource={dataSource} columns={columns} />;
}
Такие компоненты легко интегрируются в шаблоны страниц, обеспечивая единый стиль отображения данных.
Шаблоны AntD можно расширять через композицию компонентов и props. Пример повторного использования карточек с динамическим содержимым:
function InfoCard({ title, content }) {
return <Card title={title}>{content}</Card>;
}
function Dashboard() {
const cards = [
{ title: 'Продажи', content: '1500' },
{ title: 'Пользователи', content: '320' },
{ title: 'Заказы', content: '87' }
];
return (
<Row gutter={[16, 16]}>
{cards.map((card, index) => (
<Col span={8} key={index}>
<InfoCard title={card.title} content={card.content} />
</Col>
))}
</Row>
);
}
Такой подход позволяет создавать масштабируемые и единообразные шаблоны без дублирования кода.
Шаблон страницы в AntD обычно комбинирует Layout, Grid, Form и Table, обеспечивая:
Использование шаблонов является основой для разработки масштабируемых приложений на React с Ant Design, позволяя строить сложные интерфейсы быстро и эффективно.