JSX (JavaScript XML) — это расширение синтаксиса JavaScript, которое позволяет писать HTML-подобный код в файлах JavaScript/TypeScript. Это не обязательная, но рекомендуемая часть React для описания структуры UI.
React.createElement()
{ }
const element = <h1 className="title">Hello, {userName}!</h1>;
const element = React.createElement(
'h1',
{ className: 'title' },
'Hello, ',
userName,
'!'
);
React.createElement()
вызовыcreateElement
возвращает React-элемент (обычный JS-объект)// Правильно:
<div></div> или <img />
// Неправильно:
<br>
<div tabIndex="1" className="container"></div>
// Вместо class (как в HTML) используем className
const count = 5;
const message = <p>You have {count} new notifications</p>;
// Правильно:
return (
<div>
<h1>Title</h1>
<p>Content</p>
</div>
);
// Неправильно:
return (
<h1>Title</h1>
<p>Content</p>
);
// Решение: Fragment (<></>)
const props = { id: 'input1', type: 'text' };
return <input {...props} />;
<Container>
<Header />
<Content />
</Container>
// В компоненте Container они доступны как props.children
{isLoggedIn ? <LogoutButton /> : <LoginButton />}
<ul>
{items.map(item => <li key={item.id}>{item.text}</li>)}
</ul>
React.createElement()
вызовы перед выполнениемСовет: Для глубокого понимания стоит изучить, как работает React.createElement()
и какие объекты он возвращает. Это поможет при отладке и работе с более сложными сценариями.