Website-Suche

reactjs - Kann Komponentenselektoren mit MUI v5 Emotion-Bibliothek nicht verwenden


import { Box, styled } from "@mui/material"
import { Body1 } from "elements/Typography"
export const ItemHeader = styled(Box)`
  display: flex;
  flex-direction: column;
  gap: 1em;

  ${Body1} {
    span {
      margin-left: 0.5em;
      font-weight: 500;
      color: ${({ theme }) => theme.palette.error.main};
    }
  }
`

Ich erstelle eine MUI-Emotion-Komponente mit Komponenten-Selektoren, ich habe bereits babel.config.js eingerichtet und @emotion/babel-plugin installiert

module.exports = {
  plugins: [
    [
      "@emotion",
      {
        importMap: {
          "@mui/system": {
            styled: {
              canonicalImport: ["@emotion/styled", "default"],
              styledBaseImport: ["@mui/system", "styled"]
            }
          },
          "@mui/material/styles": {
            styled: {
              canonicalImport: ["@emotion/styled", "default"],
              styledBaseImport: ["@mui/material/styles", "styled"]
            }
          }
        }
      }
    ]
  ]
};

Aber es wirft den folgenden Fehler

Antwort #1

hast du versucht zu

import styled from "@emotion/styled/macro";

oder

import styled from "@emotion/styled";

statt

import {styled } from "@mui/material";

Antwort #2

Ich bin auf dasselbe Problem gestoßen und weiß nicht, wie geeignet diese Lösung ist.

Ich habe 'emotion' zu 'styled-components' geändert und kann beim Schreiben von Styles auch die Theme-Prop verwenden, und der Komponenten-Selector funktioniert. Für mich habe ich keine Änderungen bemerkt.

Aber Sie sollten es nicht verwenden, wenn Sie SSR verwenden.

https://mui.com/material-ui/integrations/styled-components/