πŸ‘©β€πŸ’» JSX

JSX β€” это синтаксичСская надстройка Π½Π°Π΄ JavaScript, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² основном Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… React для ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ описания структуры ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² интСрфСйсов. JSX позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ HTML-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ прямо Π²Π½ΡƒΡ‚Ρ€ΠΈ JavaScript, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным, особСнно ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ создании слоТных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ JavaScript

1. HTML-подобная структура: Π’ JSX Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ HTML-Ρ‚Π΅Π³ΠΈ для описания Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ структуры UI-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π΄Π°ΠΆΠ΅ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» с React.

#`const element = ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!

;

2. ДинамичСскиС выраТСния: Π’Π½ΡƒΡ‚Ρ€ΠΈ JSX ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ динамичСскоС содСрТимоС Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {}, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ JavaScript.

`const name = 'Иван'; const element = ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {name}! ===============

;

3. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ простого JavaScript, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ DOM-элСмСнты ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ, Π² JSX ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ React, дСлая ΠΊΠΎΠ΄ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ.

4. Бтилизация: JSX ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ стилизации элСмСнтов прямо Π² ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ стилСй, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ отличаСтся ΠΎΡ‚ стандартного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° CSS.

`const style = { color: 'blue', fontSize: '20px' }; const element = ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€! ============

;

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ JSX?

1. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ UI: ИспользованиС JSX ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство шаблонного ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ.

2. Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Код становится Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ благодаря Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ структурС, схоТСй с HTML. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ интСрфСйс Π½Π° нСзависимыС части.

3. Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с JavaScript: ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ JSX компилируСтся Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ JavaScript, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ совмСстно с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ JavaScript-ΠΊΠΎΠ΄ΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

Рассмотрим простой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ React, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ привСтствиС с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: `import React from 'react';

const HelloWorld = ({ name }) => { return (

#ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {name}!

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования JSX.

); };

export default HelloWorld;

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ HelloWorld, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ пропс name ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ JSX-ΠΊΠΎΠ΄, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ структуру HTML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС прилоТСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: `import HelloWorld from './HelloWorld';

const App = () => { return (

); };

export default App;

Рассмотрим ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹ Π² JSX. Π’Ρ‹ Π½Π΅ ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅, Π½ΠΎ самый частый способ это Ρ‡Π΅Ρ€Π΅Π· .map

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ массив ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ: `const users = [ { id: 1, name: 'Иван' }, { id: 2, name: 'ΠŸΠ΅Ρ‚Ρ€' }, { id: 3, name: 'Анна' } ];

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ этот список Π² Π²ΠΈΠ΄Π΅ списка - Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта . Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JSX: `import React from 'react';

const UserList = () => {
 return (


     {users.map(user => (
     + {user.name}

     ))}
 );
};

export default UserList;


Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ этот ΠΊΠΎΠ΄ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:

1. ΠœΡ‹ создаСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ UserList, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт 
    .
    2. Π’Π½ΡƒΡ‚Ρ€ΠΈ 
         ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ .map(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива users.
        3. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива прСобразуСтся Π² элСмСнт - , содСрТащий имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
        4. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово key ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта списка. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ id ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

        Начиная с вСрсии vue.js 3, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ [jsx](https://vuejs.org/guide/extras/render-function.html#jsx-tsx). Однако Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ  ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π³Π΄Π΅ html ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ js ΠΈ ΠΎΡ‚ css.```````
repost

34

input message

Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚

Π΅Ρ‰Π΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² этом сообщСствС

Π΅Ρ‰Π΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² этом соообщСствС

Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ

ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° интСрСсных ΠΏΡ€ΠΎΡ„ΠΈ

Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ большС возмоТностСй

ΠΏΠΎΠΊΠ° Π² Π²Π΅Π±-вСрсии Π΅ΡΡ‚ΡŒ Π½Π΅ всё β€” ΠΌΡ‹ вовсю Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ Π½Π΅ΠΉ

сСтка β€” cΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ для Π½Π΅Ρ‚Π²ΠΎΡ€ΠΊΠΈΠ½Π³Π° ΠΎΡ‚ hh.ru

ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΠΉΡ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌΠΈ, ΠΊΡ‚ΠΎ повлияСт Π½Π° ваш ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ