通过直接访问 DOM 应用 CSS 模块 class 名称
Apply CSS Module class name by directly accessing the DOM
我有一个组件通过 babel-plugin-react-css-modules
插件使用 CSS-Modules。
在组件生命周期的某些时候,我希望能够通过直接访问 DOM 来为其计算新尺寸。
在我的 SCSS 样式表中,我有一个名为 .full-width
的 class,我想将其应用于组件的 DOM 元素,以便进行计算,然后再次将其删除。
现在,由于添加 class 并在几分之一秒后删除它不会影响组件或其状态,我想通过直接访问 class 添加和删除 DOM 而不是通过某种方式将它与组件的 state
.
相关联
如果我这样做 this.DOMReference.classList.add('full-width');
,class full-width
会添加到其中,但我想添加 class 的模块化版本,因为它将被应用如果我做了 styleName="full-width"
(例如 Component__full-width___Pjd10
)
有什么方法可以做到这一点而不需要 .full-width
全局声明吗?
我可以用 react-css-modules
做到这一点吗?
好吧,我意识到我可以在变量下导入样式,而不是匿名导入,例如
import styles from './styles.scss'
而不是 import './styles.scss'
然后我可以这样使用它
this.DOMReference.classList.add(styles['full-width']);
我也不一定非得用styleName="styles.someClass"
,直接用styleName="someClass"
就可以了(只要导入的样式表文件只有一个即可,否则就照前者一样)
在Next.js
中使用
如果你使用 Next.js 就完美了。
导入CSS模块
import styles from './styles.module.css'
关于你的功能
element.classList.add(styles['full-width'])
我有一个组件通过 babel-plugin-react-css-modules
插件使用 CSS-Modules。
在组件生命周期的某些时候,我希望能够通过直接访问 DOM 来为其计算新尺寸。
在我的 SCSS 样式表中,我有一个名为 .full-width
的 class,我想将其应用于组件的 DOM 元素,以便进行计算,然后再次将其删除。
现在,由于添加 class 并在几分之一秒后删除它不会影响组件或其状态,我想通过直接访问 class 添加和删除 DOM 而不是通过某种方式将它与组件的 state
.
如果我这样做 this.DOMReference.classList.add('full-width');
,class full-width
会添加到其中,但我想添加 class 的模块化版本,因为它将被应用如果我做了 styleName="full-width"
(例如 Component__full-width___Pjd10
)
有什么方法可以做到这一点而不需要 .full-width
全局声明吗?
我可以用 react-css-modules
做到这一点吗?
好吧,我意识到我可以在变量下导入样式,而不是匿名导入,例如
import styles from './styles.scss'
而不是 import './styles.scss'
然后我可以这样使用它
this.DOMReference.classList.add(styles['full-width']);
我也不一定非得用styleName="styles.someClass"
,直接用styleName="someClass"
就可以了(只要导入的样式表文件只有一个即可,否则就照前者一样)
在Next.js
中使用如果你使用 Next.js 就完美了。
导入CSS模块
import styles from './styles.module.css'
关于你的功能
element.classList.add(styles['full-width'])