在 Emotion 11/Next js 10 应用程序中启用 css 道具的正确方法是啥

Posted

技术标签:

【中文标题】在 Emotion 11/Next js 10 应用程序中启用 css 道具的正确方法是啥【英文标题】:What is the proper way to enable the css prop in Emotion 11/Next js 10 apps在 Emotion 11/Next js 10 应用程序中启用 css 道具的正确方法是什么 【发布时间】:2021-05-15 21:03:39 【问题描述】:

css 属性在构建时无法识别。我不确定这是否是由于项目配置错误,或者这是否代表已知错误。

Type ' children: (string | number | boolean | | ReactElement ReactElement 组件)>) | (new (props: any) => Component<...>)> | ReactNodeArray | ReactPortal | Element)[];类名:字符串; css:序列化样式; ' 不可分配给类型 'IntrinsicAttributes & theme?: Theme;作为?:元素类型; & ClassAttributes & htmlAttributes<...> & ...; '。类型'IntrinsicAttributes&主题?:主题; 属性'css'不存在作为?:元素类型; & ClassAttributes & HTMLAttributes<...> & ...; '

复制:

https://github.com/jbcurrie/jbcurrie.github.io/tree/next

    npm 安装 打开NavMenu.tsx 检查18号线

预期行为:

css 属性应该在构建时被识别。

环境信息:

反应版本:17.0.1 下一个版本:10.0.5 @emotion/react 版本:11.1.5

【问题讨论】:

【参考方案1】:

如果使用自动运行时,您应该能够通过将以下内容添加到您的 tsconfig.json 来解决此问题。


    "compilerOptions": 
        "jsxImportSource": "@emotion/react"
    

或者,将以下内容添加到您的 next-env.d.ts,这会在不使用自动运行时时为所有组件全局添加对 css 属性的支持。

/// <reference types="@emotion/react/types/css-prop" />

查看Emotion's TypeScript documentation了解更多详情。

【讨论】:

谢谢!如文档中所述,我最终修改了 tsconfig,因为此应用程序使用自动运行时。 "compilerOptions": "jsxImportSource": "@emotion/react" 【参考方案2】:

这是一个带有情感和 Next.js 的工作配置

npm install @emotion/react @emotion/styled && npm i --save-dev @emotion/babel-plugin
yarn add @emotion/react @emotion/styled && yarn add -D @emotion/babel-plugin
.babelrc


  "presets": [
    [
      "next/babel",
      
        "preset-react": 
          "runtime": "automatic",
          "importSource": "@emotion/react"
        
      
    ]
  ],
  "plugins": ["@emotion/babel-plugin"]


package.json

"dependencies": 
    "next": "10.1.3",
    "react": "17.0.2",
    "react-dom": "17.0.2"
    "@emotion/react": "^11.1.5",
    "@emotion/styled": "^11.3.0",
,
"devDependencies": 
   "@emotion/babel-plugin": "^11.3.0"

【讨论】:

以上是关于在 Emotion 11/Next js 10 应用程序中启用 css 道具的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

使用 css prop 运行带有 CRA 和 Emotion 的 Quokka.js 时出现错误(运行时为经典时无法设置 importSource)

使用 Nextjs Tailwind Emotion 导出项目丢失了 tailwind css 样式

MUI v5:我是不是需要安装 @emotion/react 或 @emotion/styled 才能使用 sx 道具?

未找到模块:错误:运行故事书时无法解析“@emotion/styled/base”

无法使用 @emotion/styled 访问样式化组件中的主题

React JSX / TSX:使用 Emotion 导入/导出多个模块(主题对象)