В руководстве по react.js мы видим использование двойных фигурных скобок:
<span dangerouslySetInnerHTML={{ __html: rawMarkup }} />
А затем во втором уроке «Думая, реагируя» :
<span style={{ color: 'red' }}>
{this.props.product.name}
</span>;
Однако документация React JSX не описывает и не упоминает двойные фигурные скобки. Для чего нужен этот синтаксис (двойные завитки)? И есть ли другой способ выразить то же самое в jsx или это просто упущение в документации?
javascript
reactjs
Бен Робертс
источник
источник
The exterior set of curly braces are letting JSX know you want a JS expression. The interior set of curly braces represent a JavaScript object, meaning you’re passing in a object to the style attribute.
Ответы:
Это просто литерал объекта, встроенный в значение свойства. Это то же самое, что и
источник
dangerouslySetInnerHTML={__html: rawMarkup}
вместоdangerouslySetInnerHTML={rawMarkup}
? Это потому, что объект{__html: rawMarkup}
изменяемый, а строка - нет?У фигурных скобок здесь есть 2 использования: -
Посмотрим на простом примере.
<Image source={pic} style={{width: 193}}/>
Если вы наблюдаете
pic
, окружен скобами. Это способ встраивания переменной в JSX.pic
может быть любым выражением / переменной / объектом Javascript. Вы также можете сделать что-то вроде {2 + 3}, и результат будет равен {5}Давайте рассмотрим здесь стиль.
{width: 193}
является объектом Javascript. А чтобы встроить этот объект в JSX, вам понадобятся фигурные скобки, следовательно,{ {width: 193} }
источник
Если вы не знали, почему
{{color: 'red'}}
используется вstyle
тегеСогласно официальной документации React , атрибут style принимает объект JavaScript, а не строку CSS.
источник
React использует JSX. В JSX любая переменная, объект состояния, выражение и т. Д. Должны быть заключены в {}.
При задании встроенных стилей в JSX он должен быть указан как объект, поэтому он снова должен быть внутри фигурных скобок. {}.
Это причина того, что есть две пары фигурных скобок.
источник
это означает, что вместо объявления переменной стиля, которая установлена для объекта предполагаемых свойств стиля, вы можете вместо этого просто установить свойства стиля в объекте ... обычно это лучшая практика, когда стилей, которые вы хотите добавить, мало, однако для элемент, который требует большего стиля, проще объявить переменную стиля
например, для элемента с меньшим количеством свойств стиля сделайте это
для элемента HTML с большим количеством свойств стиля сделайте это
затем вы вызываете его с синтаксисом jsx
источник
Я стараюсь изложить это простыми словами, чтобы всем было понятно. Код ниже:
<span dangerouslySetInnerHTML={{__html: rawMarkup}} />
равно
Итак, просто мы должны использовать выражение React, если мы собираемся присвоить литеральный объект свойству.
Для некоторых людей, которые в основном переходят с AngularJs на ReactJs, это, вероятно, является частью путаницы с оператором привязки выражений AngularJs {{}} . Итак, попробуйте взглянуть на это по-другому в ReactJs.
источник
Моя интерпретация двойных фигурных скобок заключается в том, что объект стиля принимает только объект JavaScript, поэтому объект должен находиться внутри одинарных фигурных скобок.
Объект для артефактов стиля состоит из пар ключ: значение (словарь по сравнению с массивом), и этот объект выражается, например, как
{color:'#ffffff'}
.Итак, у вас есть:
и
Как и в алгебре, когда вы подставляете, это означает:
источник