В React компоненты — это независимые, переиспользуемые строительные блоки в приложении, которые определяют, что отображается на пользовательском интерфейсе (UI). Они принимают входные данные, называемые props (свойства), и возвращают React-элементы, описывающие UI.
В этой статье мы рассмотрим основы React-компонентов, props, state (состояния) и процесса рендеринга.
Что такое React-компоненты?
Компонент — это строительный блок, который инкапсулирует часть пользовательского интерфейса (UI). Он определяет структуру и поведение интерфейса, либо управляя собственным состоянием, либо получая данные через props и отображая контент на их основе. Компоненты можно переиспользовать и комбинировать, чтобы модульно создавать сложные интерфейсы.
- Компоненты можно использовать в разных частях приложения для поддержания единообразия и уменьшения дублирования кода.
- Компоненты управляют тем, как их вывод отображается в DOM, основываясь на их состоянии и props.
- React загружает только необходимые компоненты, обеспечивая оптимальную производительность.
- Обновляется только конкретный компонент, а не вся страница целиком.
Виды React-компонентов
Существует два основных типа React-компонентов:
1. Функциональные компоненты
Функциональные компоненты проще и предпочтительнее в большинстве случаев. Это обычные JavaScript-функции, которые возвращают React-элементы. С появлением React Hooks функциональные компоненты также могут управлять состоянием и жизненным циклом.
- Без состояния или с состоянием: могут управлять состоянием с помощью React Hooks.
- Простой синтаксис: идеально подходят для небольших и переиспользуемых компонентов.
- Производительность: обычно работают быстрее, так как не требуют использования ключевого слова
this
.
function Greet(props) {
return <h1>Hello, {props.name}!</h1>;
}
2. Классовые компоненты
Классовые компоненты — это ES6-классы, наследующиеся от React.Component. Они предоставляют дополнительные возможности, такие как управление состоянием и методы жизненного цикла.
- Управление состоянием: состояние хранится в свойстве this.state.
- Методы жизненного цикла: включают такие методы, как componentDidMount, componentDidUpdate и другие.
class Greet extends React.Component {
render() {
return <h1>Hello, {this.props.name}!</h1>;
}
}
Props в React-компонентах
Props (свойства) — это входные данные только для чтения, передающиеся от родительского компонента к дочернему. Они обеспечивают динамический поток данных и возможность повторного использования.
- Props неизменяемы (immutable).
- Обеспечивают связь между компонентами.
function Greet(props) {
return <h2>Welcome, {props.username}!</h2>;
}
// Использование
<Greet username="Anil" />;
State в React-компонентах
State (состояние) — это JavaScript-объект, управляемый внутри компонента, который позволяет хранить и обновлять собственные данные со временем. В отличие от props, состояние изменяемо и полностью контролируется самим компонентом.
- Обновления состояния вызывают повторный рендеринг компонента.
- В функциональных компонентах для управления состоянием используется хук useState.
function Counter() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
Рендеринг компонента
Рендеринг компонента — это процесс его отображения в браузере. React-компоненты можно отрисовать с помощью метода ReactDOM.render() или встроить в другие компоненты.
- Убедитесь, что компонент импортирован перед рендерингом.
- Метод ReactDOM.render обычно используется в корневом файле.
ReactDOM.render(<Greeting name="Pooja" />, document.getElementById('root'));
Компоненты внутри компонентов
В React компоненты можно вкладывать друг в друга для создания модульной и иерархической структуры.
- Компоненты можно использовать многократно внутри одного или разных компонентов.
- Props можно передавать вложенным компонентам для динамического контента.
function Header() {
return <h1>Welcome to My Site</h1>;
}
function Footer() {
return <p>© 2024 My Company</p>;
}
function App() {
return (
<div>
<Header />
<p>This is the main content.</p>
<Footer />
</div>
);
}
export default App;
Лучшие практики при работе с React-компонентами
- Держите компоненты небольшими: каждый компонент должен выполнять одну задачу хорошо.
- Используйте функциональные компоненты: за исключением случаев, когда требуются методы жизненного цикла или обработка ошибок.
- Валидация props: используйте PropTypes для контроля правильных типов props.
- Управление состоянием: поднимайте состояние к ближайшему общему предку, если нескольким компонентам необходим к нему доступ.
Для получения дополнительной информации о компонентах рекомендуем ознакомиться с материалом «Component Set 2».
🔑 Ключевые моменты:
- React-компоненты — переиспользуемые строительные блоки UI, которые управляют отображением и поведением интерфейса.
- Существуют функциональные и классовые компоненты, функциональные — проще и эффективнее.
- Props — неизменяемые входные данные, обеспечивающие связь компонентов.
- State — изменяемое состояние компонента, управление которым приводит к перерисовке.
- Компоненты могут вкладываться друг в друга, создавая модульную структуру интерфейса.