Jump to content

JSX (JavaScript)

JSX ( JavaScript XML , формально JavaScript Syntax eXtension ) — это XML-подобное расширение синтаксиса языка JavaScript . [1] Первоначально созданный Facebook для использования с React , JSX был принят во многих веб-фреймворках . [2] : 5  [3] : 11  Будучи синтаксическим сахаром , JSX обычно транспилируется во вложенные вызовы функций JavaScript, структурно похожие на исходный JSX.

Разметка

[ редактировать ]

Пример JSX-кода:

const App = () => {
   return (
     <div>
       <p>Header</p>
       <p>Content</p>
       <p>Footer</p>
     </div>
   ); 
}

Вложенные элементы

[ редактировать ]

Несколько элементов на одном уровне необходимо обернуть в один элемент React, например <div> элемент, показанный выше, фрагмент, обозначенный <Fragment> или в его сокращенной форме <>или возвращается в виде массива. [4] [5] [3] : 68–69 

Атрибуты

[ редактировать ]

JSX предоставляет ряд атрибутов элементов, отражающих атрибуты HTML. Пользовательские атрибуты также могут быть переданы компоненту. [6] Все атрибуты будут получены компонентом в качестве реквизита.

Выражения JavaScript

[ редактировать ]

JavaScript Выражения (но не операторы ) можно использовать внутри JSX с фигурными скобками. {}: [3] : 14–16 

  <h1>{10+1}</h1>

В приведенном выше примере будет отображаться:

  <h1>11</h1>

Условные выражения

[ редактировать ]

Операторы if-else нельзя использовать внутри JSX, но вместо них можно использовать условные выражения. Пример ниже отобразит { i === 1 ? 'true' : 'false' } как строка 'true' потому что i равен 1.

const App = () => {
   const i = 1;

   return (
     <div>
       <h1>{ i === 1 ? 'true' : 'false' }</h1>
     </div>
   );
}

Вышеуказанное будет отображать:

<div>
  <h1>true</h1>
</div>

Функции и JSX можно использовать в условных выражениях: [3] : 88–90 

const App = () => {
   const sections = [1, 2, 3];

   return (
     <div>
       {sections.map((n,i) => (
           /* 'key' is used by React to keep track of list items and their changes */
           /* Each 'key' must be unique */
           <div key={"section-" + n}>
               Section {n} {i === 0 && <span>(first)</span>}
           </div>
       ))}
     </div>
   );
}

Вышеуказанное будет отображать:

<div>
  <div>Section 1<span>(first)</span></div>
  <div>Section 2</div>
  <div>Section 3</div>
</div>

Код, написанный на JSX, требует преобразования с помощью такого инструмента, как Babel, прежде чем его смогут понять веб-браузеры. [7] [8] : 5  Эта обработка обычно выполняется в процессе сборки программного обеспечения приложения перед развертыванием .

См. также

[ редактировать ]
  1. ^ «Черновик: спецификация JSX» . JSX . Фейсбук . Проверено 7 апреля 2018 г.
  2. ^ Ларсен, Джон (2021). Хуки React в действии с приостановкой и параллельным режимом . Мэннинг. ISBN  978-1720043997 .
  3. ^ Перейти обратно: а б с д Вирух, Робин. Дорога к реагированию . Линпаб. ISBN  978-1720043997 .
  4. ^ Кларк, Эндрю (26 сентября 2017 г.). «React v16.0§Новые типы возврата рендеринга: фрагменты и строки» . Реагирующий блог .
  5. ^ «React.Component: рендеринг» . Реагируйте .
  6. ^ Кларк, Эндрю (26 сентября 2017 г.). «React v16.0§Поддержка пользовательских атрибутов DOM» . Реагирующий блог .
  7. ^ Фишер, Людовико (6 сентября 2017 г.). Реагируйте по-настоящему: интерфейсный код, распутанный . Прагматичная книжная полка. ISBN  9781680504484 .
  8. ^ Ларсен, Джон (2021). Хуки React в действии с приостановкой и параллельным режимом . Мэннинг. ISBN  978-1720043997 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e21f70a86945c9307ba3a3f885f6227b__1713819480
URL1:https://arc.ask3.ru/arc/aa/e2/7b/e21f70a86945c9307ba3a3f885f6227b.html
Заголовок, (Title) документа по адресу, URL1:
JSX (JavaScript) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)