Это будет краткое введение в компоненты и свойства React. Мы продолжим более подробно в одной из следующих статей.
Компоненты - это строительные блоки приложения React. Они позволяют разделить пользовательский интерфейс на независимые, многоразовые части. Вы можете думать о компоненте как о функции JavaScript. Они принимают входные данные (называемые реквизитами) и возвращают элементы React, описывающие, что должно быть на экране.
Если вы не читали мои статьи о JSX и React Elements, я рекомендую вам начать сначала.
Самый простой способ определить компонент - написать функцию JavaScript.
function Welcome(props) { return <h1>Hello, {props.firstName}</h1>; }
Поскольку эта функция принимает один объект prop с данными и возвращает элемент React, это действительный компонент React. Они называются функциональными компонентами, потому что они в буквальном смысле являются функциями!
Возможно, вы также видели что-то вроде этого:
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
В приведенном выше примере для определения компонента используется класс ES6. На данный момент мы придерживаемся функциональных компонентов и обсудим компоненты класса в следующей статье.
Чтобы отрендерить компонент, мы должны сделать что-то вроде этого:
function Welcome(props) {
return <h1>Hello, {props.firstName}</h1>;
}
const element = <Welcome firstName="Courtney" />;
ReactDOM.render(
element,
document.getElementById('root')
);
Мы вызываем ReactDOM.render()
с элементом <Welcome />
. React вызывает компонент Welcome
с {firstName: 'Courtney'}
в качестве реквизита. Затем наш компонент Welcome
возвращает «Привет, Кортни» в элементе h1
. Супер просто! Попробуйте создать компонент и отрендерить его в DOM!
Всегда начинайте имена компонентов с заглавной буквы! Поскольку они отличаются от тегов HTML, мы не хотим, чтобы модель DOM запуталась!
Поскольку все, что мы делаем с этим компонентом, - это передача реквизитов для отображения имени, вы можете использовать его снова и снова на своей странице и отображать разные имена!
function Welcome(props) { return <h1>Hello, {props.firstName}</h1>; }
function App() { return ( <div> <Welcome firstName="Courtney" /> <Welcome firstName="Katie" /> <Welcome firstName="Max" /> </div> ); } ReactDOM.render( <App />, document.getElementById('root') );
Тогда вы можете рендерить App
!
Лучше всего, чтобы ваши компоненты React были небольшими и красивыми. Если вам кажется, что ваш компонент становится слишком большим! Сделайте его отдельным компонентом.
Например, если у вас есть это:
function Home(props) {
return (
<div className="container">
<div className="wrapper">
<img className="userImage"
src={props.author.iconUrl}
alt={props.author.name}
/>
<div className="userInfo">
{props.author.name}
</div>
</div>
<div className="text">
{props.text}
</div>
</div>
);
}
Затем вы можете, например, разбить изображение на отдельный компонент!
function Avatar(props) {
return (
<img className="Avatar"
src={props.user.iconUrl}
alt={props.user.name}
/>
);
}
Затем вы можете использовать компонент Avatar
внутри компонента Home
!
function Home(props) {
return (
<div className="container">
<div className="wrapper">
<Avatar user={props.user} />
<div className="userInfo">
{props.author.name}
</div>
</div>
<div className="text">
{props.text}
</div>
</div>
);
}
Реквизиты доступны только для чтения. Это означает, что компонент никогда не должен обновлять свои собственные свойства!
В следующем уроке мы поговорим о состоянии! Это позволяет компонентам React со временем изменять свой вывод.