这是我的密码
import { css, jsx } from '@emotion/core'
return (
<>
<img css={css`height: 200px; height: 200px;`} fluid={image.sharp.fluid} />
<List>
<li>Our Clients</li>
<li>What We Do</li>
<li>Contact</li>
</List>
</>
)
这是我得到的错误
您试图将css
函数返回的对象字符串化。它不应该直接使用(例如作为className
prop的值),而是交给情感处理(例如作为css
prop的值)。
这个错误似乎是在告诉我,我需要做我已经在做的事情?或者我在这里遗漏了什么。
7条答案
按热度按时间wdebmtf21#
只是想指出我有这个问题,并添加了这个修复了我的错误:
为了澄清,您必须在文件顶部添加
/** @jsx jsx */;
。jvidinwx2#
作为detailed in the Emotion documentation,使用
css
prop需要将React
替换为jsx
作为JSX元素的目标函数(称为“pragma”),这将使Emotion能够拦截css
prop并将其转换为用于React的className
prop。例如:
有两种方法可以实现这一点。你只需要选择一种。如果你能够在你的应用程序中配置巴别塔,第一种是推荐的方法,但任何一种都可以:
1.安装Babel插件,将
jsx
配置为应用中所有代码的默认处理程序最直接的方法是将相关的巴别塔预设添加到巴别塔配置中,如下所示:
不过,如果您能够做到这一点,我建议您配置babel-plugin-emotion,它包括
css
prop配置以及其他特性,如缩小、死代码消除和提升:1.从Emotion导入
jsx
函数,并使用pragma指示Babel在每个文件的基础上使用此导入的函数wwtsj6pe3#
这个方法解决了我的问题:
xdyibdwo4#
除了包括
@emotion/babel-plugin
之外,还有一些我遗漏的配置导致了这个错误。缺少
"importSource": "@emotion/react"
。添加后,错误消失,样式正确实现。rvpgvaaj5#
您需要安装这个Babel插件,babel-preset-css-prop
nwnhqdif6#
有两种方法可以开始使用css属性。
1.巴别塔预设
这两种方法会产生相同的编译程式码。
JSX编译指示
在使用css prop的源文件的顶部设置jsx pragma。此选项最适合测试css prop特性或在babel配置不可配置的项目中(create-react-app、codesandbox等)。
如果不起用途:
巴别塔预设
此方法不适用于Create React App**或其他不允许自定义Babel配置的项目。请改用JSX Pragma方法。
.巴伯尔c
无法解决您的问题?请考虑阅读官方文档:******
umuewwlo7#
/**@jsx jsx */从“@情感/核心”导入{ jsx,css }