Emotion.js with create-react-app: ReferenceError: jsx is not defined
Emotion.js with create-react-app: ReferenceError: jsx is not defined
我正在尝试将 emotion.js 与 create-react-app 和 TypeScript 一起使用。
在 documentation 之后,我添加了 @emotion/core
,使用了 import {jsx, css} from '@emotion/core';
并在我的文件顶部添加了 /** @jsx jsx */
。
但是当我 运行 应用程序时,会抛出以下错误:
ReferenceError: jsx is not defined
这是我的示例组件:
/** @jsx jsx */
import {jsx, css} from '@emotion/core';
import React from 'react';
import {NavigationBar} from "./NavigationBar";
export const Header: React.FunctionComponent<{}> = () => (
<div css={{
backgroundColor: 'hotpink',
'&:hover': {
color: 'lightgreen'
}
}}>
<NavigationBar/>
Test
</div>
);
抛出错误的那一行是函数的定义:export const Header: React.FunctionComponent<{}> = () => (
任何帮助如何让它工作(除了弹出 create-react-app 脚本)将不胜感激。
更新: 根据 github 上的 comment,情感现在应该立即发挥作用。
解决方案是在文件中的某处放置一个 jsx;
语句,如下所示:
/** @jsx jsx */
import {jsx, css} from '@emotion/core';
import React from 'react';
import {NavigationBar} from "./NavigationBar";
jsx;
export const Header: React.FunctionComponent<{}> = () => (
<div css={{
backgroundColor: 'hotpink',
'&:hover': {
color: 'lightgreen'
}
}}>
<NavigationBar/>
Test
</div>
);
要添加到 Johannes Klauß 的回答,您不需要参考 jsx;
您只需要 pragma 语句(顶行和导入):
/** @jsx jsx */
import { jsx } from "theme-ui"
示例:
/** @jsx jsx */
import {jsx, css} from '@emotion/core';
import React from 'react';
import {NavigationBar} from "./NavigationBar";
export const Header: React.FunctionComponent<{}> = () => (
<div css={{
backgroundColor: 'hotpink',
'&:hover': {
color: 'lightgreen'
}
}}>
<NavigationBar/>
Test
</div>
);
您可能需要添加:
/** @jsxRuntime classic */
如果使用主题 -ui 和 next.JS
我正在尝试将 emotion.js 与 create-react-app 和 TypeScript 一起使用。
在 documentation 之后,我添加了 @emotion/core
,使用了 import {jsx, css} from '@emotion/core';
并在我的文件顶部添加了 /** @jsx jsx */
。
但是当我 运行 应用程序时,会抛出以下错误:
ReferenceError: jsx is not defined
这是我的示例组件:
/** @jsx jsx */
import {jsx, css} from '@emotion/core';
import React from 'react';
import {NavigationBar} from "./NavigationBar";
export const Header: React.FunctionComponent<{}> = () => (
<div css={{
backgroundColor: 'hotpink',
'&:hover': {
color: 'lightgreen'
}
}}>
<NavigationBar/>
Test
</div>
);
抛出错误的那一行是函数的定义:export const Header: React.FunctionComponent<{}> = () => (
任何帮助如何让它工作(除了弹出 create-react-app 脚本)将不胜感激。
更新: 根据 github 上的 comment,情感现在应该立即发挥作用。
解决方案是在文件中的某处放置一个 jsx;
语句,如下所示:
/** @jsx jsx */
import {jsx, css} from '@emotion/core';
import React from 'react';
import {NavigationBar} from "./NavigationBar";
jsx;
export const Header: React.FunctionComponent<{}> = () => (
<div css={{
backgroundColor: 'hotpink',
'&:hover': {
color: 'lightgreen'
}
}}>
<NavigationBar/>
Test
</div>
);
要添加到 Johannes Klauß 的回答,您不需要参考 jsx;
您只需要 pragma 语句(顶行和导入):
/** @jsx jsx */
import { jsx } from "theme-ui"
示例:
/** @jsx jsx */
import {jsx, css} from '@emotion/core';
import React from 'react';
import {NavigationBar} from "./NavigationBar";
export const Header: React.FunctionComponent<{}> = () => (
<div css={{
backgroundColor: 'hotpink',
'&:hover': {
color: 'lightgreen'
}
}}>
<NavigationBar/>
Test
</div>
);
您可能需要添加:
/** @jsxRuntime classic */
如果使用主题 -ui 和 next.JS