嵌套类选择器在 next.js sass 中不起作用

hop*_*mer 11 sass next.js

我在 next.js 中使用 scss 模块,并希望使用像这样的嵌套类选择器:

.div {
  .x {
    color: red;
  }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不适用于以下组件:

.div {
  .x {
    color: red;
  }
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,样式不适用于标签<span>。这段代码有什么问题吗?

小智 8

您可以使用:global使嵌套类工作:

.div {
  :global .x {
    color: red;
  }
}
Run Code Online (Sandbox Code Playgroud)

那么你可以这样使用:

import React from 'react'
import styles from './my-component.module.scss'

export default class MyComponent extends React.Component {
  public render() {
    return (
      <div className={styles.div}>
        <span className='x'>ololo</span>
      </div>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这是 Nextjs 的事吗?我在文档中找不到它。 (3认同)

hop*_*mer 2

我有点不清楚,但似乎我需要从模块中提取这两个类。像这样:

import React from 'react'
import styles from './my-component.module.scss'

export default class MyComponent extends React.Component {
  public render() {
    return (
      <div className={styles.div}>
        <span className={styles.x}>ololo</span>
      </div>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作得很好。

  • 那么使用 scss 有什么意义呢?如果我们需要使用 styles.div 和 styles.x,它就像一个常规的 css 模块。 (14认同)