Это пользовательская прагма , которая сообщает преобразователю jsx, в данном случае babel-plugin-transform-react
, какую функцию использовать для преобразования вашего jsx в простой javascript.
Из ReactВеб-сайт :
Компонент React с использованием jsx, который выглядит следующим образом:
class Hello extends React.Component {
render() {
return <div>Hello {this.props.toWhat}</div>;
}
}
Будет преобразован в следующее:
class Hello extends React.Component {
render() {
return React.createElement('div', null, `Hello ${this.props.toWhat}`);
}
}
Но с использованием этого пользовательскогоПрагма, скомпилированный JS может выглядеть следующим образом:
class Hello extends React.Component {
render() {
return jsx('div', null, `Hello ${this.props.toWhat}`);
}
}
Это полезно, потому что функция jsx
может каким-то образом включить функциональность библиотеки, которую вы используете, изменяя или иным образом используя реквизиты илидругие данные, переданные из jsx.
Так что ответ на этот вопрос:
Есть ли какие-либо последствия от пропуска / ** @jsx jsx * /
- это да.Это, вероятно, нарушит функциональность библиотеки.
РЕДАКТИРОВАТЬ
Это упоминается в документах эмоций здесь: https://emotion.sh/docs/css-prop#jsx-pragma