Material ui 'new' v5.0.0jectFirst 无法设置特异性

2024-03-11

MUI v5.0.0今天发布了,在我的尖峰分支中,我正在尝试更新到新版本。我正在执行 mui-docs 中详细的步骤here https://mui.com/guides/migration-v4/#theme。我在用styled-components with NextJS看来 mui 风格是not先注射。我不确定我可以采取什么不同的措施来提前实现这一目标,据我所知,我一直在正确遵循该指南中的所有内容并逐步进行更改。然而,我仍然遇到特异性错误。

styled-components 样式位于其他所有内容之下。

<StylesProvider injectFirst>现在似乎无法正常工作

想法?

_app.tsx

import styled, { createGlobalStyle, ThemeProvider } from 'styled-components';
import withDarkMode, { useDarkMode } from 'next-dark-mode';
import defaultTheme from 'src/theme';
import TopNavigation from '@components/_molecules/TopNavigation/TopNavigation';
import StyledTypography from '@components/_atoms/Typography/StyledTypography';
import { Provider } from 'react-redux';
import { StylesProvider } from '@mui/styles';

function MyApp({ Component, pageProps }): JSX.Element {

  // ? https://nextjs.org/docs/basic-features/layouts
  const getLayout = Component.getLayout || (page => page);

  return (
    <StylesProvider injectFirst>
      <ThemeProvider theme={setTheme}>
        <RootStyles>
            <PageLayout>
              <TopNavigation />
              <Body>
                {getLayout(
                  <Provider store={store}>
                    <Component {...pageProps} />
                  </Provider>
                )}
              </Body>
              <Footer />
            </PageLayout>
        </RootStyles>
      </ThemeProvider>
    </StylesProvider>
  );
}

const RootStyles = styled.div`
  color: ${({ theme }) => theme.palette.font.primary};
`;

_document.js

import Document, { Html, Head, Main, NextScript } from 'next/document';
import { ServerStyleSheet } from 'styled-components';
import { ServerStyleSheets } from '@mui/styles';

class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const styledComponentsSheet = new ServerStyleSheet();
    const materialSheets = new ServerStyleSheets();
    const originalRenderPage = ctx.renderPage;

    try {
      ctx.renderPage = () =>
        originalRenderPage({
          enhanceApp: App => props =>
            styledComponentsSheet.collectStyles(
              materialSheets.collect(<App {...props} />)
            ),
        });

      const initialProps = await Document.getInitialProps(ctx);

      return {
        ...initialProps,
        styles: (
          <>
            {initialProps.styles}
            {materialSheets.getStyleElement()}
            {styledComponentsSheet.getStyleElement()}
          </>
        ),
      };
    } finally {
      styledComponentsSheet.seal();
    }
  }

  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
  render() {
    return (
      <Html lang="en" dir="ltr">
        <Head>
          <link rel="preconnect" href="https://fonts.gstatic.com" />
          <link
            rel="stylesheet"
            href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap"
          />
          <link
            rel="stylesheet"
            href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css"
          />
        </Head>
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    );
  }
}

export default MyDocument;

包.json

...
 "dependencies": {
    "@emotion/react": "^11.4.1",
    "@emotion/styled": "^10.0.27",
    "@material-ui/core": "^4.12.1",
    "@mui/material": "^5.0.0",
    "@mui/styled-engine": "npm:@mui/styled-engine-sc@latest",
    "@mui/styles": "^5.0.0",
    "next": "10.2.3",
    "react": "17.0.2",
    "react-dom": "17.0.2",
    "storybook-addon-styled-component-theme": "^2.0.0",
    "styled-components": "^5.3.1",
  },
  "resolutions": {
    "@mui/styled-engine": "npm:@mui/styled-engine-sc@latest"
  },
...

Try this

import StyledEngineProvider from '@mui/material/StyledEngineProvider';

function App() {
  return (
    <StyledEngineProvider injectFirst>
      <OtherComponents />
    </StyledEngineProvider>
  );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Material ui 'new' v5.0.0jectFirst 无法设置特异性 的相关文章

随机推荐

  • 如何提取文本字符串中的文本

    我有一个简单的问题 我希望在不使用 VBA 的情况下解决它 但如果这是解决它的唯一方法 那就这样吧 我有一个包含多行 均为一列 的文件 每行都有如下所示的数据 1 7 82E 13 gt gi 297848936 参考 XP 00 4 氢氧
  • Android 通知大图像不起作用

    我正在创建这样的通知 Intent intent new Intent this OfferNotification class PendingIntent pIntent PendingIntent getActivity this 0
  • 之间的区别。 git 中的 (点) 和 * (星号) 通配符

    我有一个本地存储库 并试图放弃自上次提交以来的所有更改 git checkout HEAD 命令 一切工作正常 即使更改是在某个子目录中 但是当我添加一些未跟踪的文件 满足中的掩码 gitignore 对存储库的根目录说 Ignored t
  • 测试 POSIX shell 合规性?

    如何测试 shell 脚本以验证它是否符合 POSIX 标准 我有大量为各种版本的 Bash 和可能的其他 shell 编写的脚本 我希望能够确定哪些完全符合 POSIX 标准 哪些不符合 理想情况下 我想找到类似的东西lint但对于 sh
  • virtualenv 和 pyenv 之间有什么关系?

    我最近学习了如何在工作流程中使用 virtualenv 和 virtualenvwrapper 但我在一些指南中看到了 pyenv 但我似乎无法理解 pyenv 是什么以及它与 virtualenv 有何不同 相似 pyenv 是 virt
  • CSS 未应用于 Visual Studio 2012 设计器?

    我有一些 css 当我的 CSS 文件内时 这些 css 不会应用于 Visual Studio 中的设计器 但会在我发布时应用于页面 这个问题大大减慢了网站开发速度 因为我正在尝试学习 CSS 下面是 CSS 的示例 header bac
  • android 获取CountdownTimer上的剩余时间并使用剩余时间作为分数

    所以我这里有测验应用程序和计时器 所以我想要发生什么 例如 我将计时器设置为 15 秒 如果用户在 5 秒内回答问题 我希望 10 秒的剩余时间变成 10 分 它将添加到之前的分数加上您将获得的分数回答问题 所以现在我有这个 if save
  • 使用 firebaserecycleradapter 过滤 recyclerview

    我有一个带有 FirebaseRecyclerAdapter 的 RecyclerView 当用户开始在 SearchView 中输入内容时 我想用名称列表填充 RecyclerView public class SchoolsAdapte
  • Android 到 PC USB 读/写

    我在 PC 上有一个程序 从 USB 接收字符串输入 旧程序 我有一个 Android 4 X 平板电脑 需要向在 PC 上运行的程序提供 USB 上的字符串输入 当我在 Android 上使用示例代码时 以下代码给出了空的哈希图 PC 在
  • 这个“模式”有名字吗?

    我想知道这个 模式 是否有一个名称 其中方法签名称为 TrySomething 例如int TryParse decimal TryParse etc 我的一位同事经常使用这种命名约定 他们不会返回值或抛出异常 而是调用一个方法TryDoS
  • sql Server:按积分总和排名并按排名排序

    我有一个包含以下字段的游戏桌 ID Name Email Points 1 John email protected cdn cgi l email protection 120 2 Test email protected cdn cgi
  • 哪个更快:x<<1 或 x<<10?

    我不想优化任何东西 我发誓 我只是出于好奇而想问这个问题 我知道在大多数硬件上都有位移位的汇编命令 例如shl shr 这是一个单一命令 但移位多少位 从纳秒角度或从 CPU 角度角度 是否重要 换句话说 以下任一选项在任何 CPU 上都更
  • ghc-pkg 检查黑线鳕警告

    全新安装 haskell 平台后 通过homebrew GHC x64 7 6 3 on OSX 10 9 2当我运行时 我收到以下警告ghc pkg check 见下文 Warning haddock interfaces Users u
  • JAXB 解组未知 XML 内容的子集

    我有一个要求unmarshall未知的子集XML内容 对于该未编组的对象 我需要修改一些内容并将相同的 XML 内容 子集 与原始 XML 重新绑定 输入 XML 示例
  • 如何从 C# 解密 ruby​​ 中的 RijandelManaged?

    static byte keyBytes new byte 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 static byte iv new byte 1
  • 为什么指针变量不显示 100 位数字?

    目标 我对准确性有要求 我需要显示 100 位数字或至少 50 位数字 尝试 1 首先我使用了整数变量 然后它只显示 10 位数字 尝试2 在我朋友的帮助下 我使用指针概念 它成功输入了50到100位数字 但指针变量仅显示10位数字 我写的
  • 在rails中执行AJAX Post而不传递authenticity_token

    所以我记得有一次 当我尝试做一篇 AJAX 帖子时 我必须将 form authenticity token 作为数据之一传递给 Rails 由于某种原因 不这样做会产生某种错误 我会立即注销 有没有办法仍然拥有这个真实性令牌用于表单提交但
  • 如何在 htaccess 中启用阿拉伯语 slug?

    我有一个多语言网站 我正在尝试创建一个友好的 URL 在我的数据库中 我有slug场地 当文章的标题是英文时 slug 会出现在 url 中 并且重定向工作正常 但当标题是阿拉伯语时 会出现 slug 并且重定向显示 未找到对象 page
  • 请解释闭包,或将循环计数器绑定到函数范围

    我见过程序员使用计数器在循环内分配事件侦听器 我相信这是语法 for var i 0 i lt someArray length i someArray i onclick function i Some code using i i 有人
  • Material ui 'new' v5.0.0jectFirst 无法设置特异性

    MUI v5 0 0今天发布了 在我的尖峰分支中 我正在尝试更新到新版本 我正在执行 mui docs 中详细的步骤here https mui com guides migration v4 theme 我在用styled compone