首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NextJS或条件css导入中的多个布局

NextJS或条件css导入中的多个布局
EN

Stack Overflow用户
提问于 2021-02-12 09:54:40
回答 3查看 3.6K关注 0票数 3

我正致力于将遗留应用程序迁移到Nextjs。该应用程序有两个布局:公共管理部分。每个布局都有自己的css文件。由于nextjs的限制,当您只能在自定义_app.js文件中导入css时,我不能拆分布局。我不想包括管理css到公共布局,反之亦然。在这种情况下我能做什么?

我试图使用styled-jsx,但它带来了更多的问题。我不能用css.globe``包装整个css文件,因为有很多错误,比如we don't support nesting等等。

EN

回答 3

Stack Overflow用户

发布于 2021-02-23 19:26:07

您可以将文件放在/public文件夹中,然后手动管理css。手动管理包含的样式的一个好地方是一个自定义的_document.jsx页面。

注意,接下来要做的就是这样做。这些文件不会与其他css文件捆绑在一起。它们也将通过网址向公众提供。

票数 0
EN

Stack Overflow用户

发布于 2022-01-18 19:34:55

通过将名称从(例如) CSS模块更改为public.module.css,将导入转换为public.module.css

然后将其作为对象导入。

代码语言:javascript
复制
import styles from 'path-to/public.module.css'

并与className属性一起使用。

代码语言:javascript
复制
<div className={styles.whatever}></div>

注意,public.module.css的内容只是股票CSS。

代码语言:javascript
复制
.whatever { /*...*/ }

可以使用三元的条件样式。

代码语言:javascript
复制
<div className={someBoolean ? styles.whatever : ''}>
票数 -1
EN

Stack Overflow用户

发布于 2021-02-12 11:50:39

您可以用dynamic定义两个布局组件,然后在_app.js中切换。这个文章展示了dynamic的特性。

另一方面,在we don't support nesting中应用css编译器的sass/scss文件可能会导致styled-jsx的出现。您可以尝试使styled-jsx支持sass/scss特性

_app.js

代码语言:javascript
复制
const App = ({ Component, pageProps }) => {
  return (
    <Layout>
      <Component {...pageProps} />
    </Layout>
  )
}

Layout.js

代码语言:javascript
复制
import dynamic from 'next/dynamic';

const mapLayoutToComponent = {
  public: dynamic(import("./layouts/Public")),
  admin: dynamic(import("./layouts/Admin"))
}

const Layout = props => {
  const [layoutState, setLayoutState] = React.useState('public');
  const Component = mapLayoutNameToComponent[layoutState];

  return <Component>{props.children}</Component>
}

布局/Public.js

代码语言:javascript
复制
import '../styles/public.css';

const Public = (props) => {
  return <>{props.children}</>
};

布局/Admin.js

代码语言:javascript
复制
import '../styles/admin.css';

const Admin = (props) => {
  return <>{props.children}</>
};
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66169658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档