javascript - 使用模块化 CSS 将状态字符串作为类名与 React 一起使用
问题描述
我在 React 项目中使用 CSS 模块。我希望能够className={this.state.boxClassName}
在我的第一个返回的 div 中使用,而不是硬编码className={classes.trigger}
,正如您在下面看到的那样。
但是,当我这样做时,在检查 chrome 中的页面时,div(它只是一个 css 样式的正方形)没有收到对 css 文件的正确引用。
使用该this.state
版本时,我看到<div class="classes.trigger">
并没有正方形,而当我对其进行硬编码时,我正确地看到<div class="Box__trigger__9jAXL">
了(这种带有散列结尾的格式来自 React 中的 css 模块的配置方式)并且正确渲染了正方形。
那么,如果使用 css 模块,我该如何解决这个问题,以便能够引用 className 的状态?我是新手,这是我在这里的第一个问题,所以感谢您对我的支持,非常感谢任何帮助。
import React, { Component } from 'react';
import classes from './Box.css';
class Box extends Component {
state = {
boxClassName: 'classes.trigger',
}
render() {
return(
<div className={classes.trigger}>
<div className={classes.box} />
</div>
);
}
}
export default Box;
解决方案
您可以设置boxClassName
为只是要从classes
对象访问的键。
class Box extends Component {
state = {
boxClassName: 'trigger',
}
render() {
return(
<div className={classes[this.state.boxClassName]}>
<div className={classes.box} />
</div>
);
}
}
推荐阅读
- android - Recyclerview 与视图绑定,点击监听
- python - 芹菜:得到一个小组的孩子
- json - 插入数据库时“列表”对象不可调用
- jupyter-notebook - 在 Jupyter Lab Notebook 中以编程方式设置内核
- reactjs - 如何处理空的 JSON 文件
- python-3.x - 使用 if else 条件过滤 pandas 组
- ruby-on-rails - 如何解决 Gemfile.lock 包含合并冲突(运行 `git checkout HEAD -- Gemfile.lock` 不起作用)
- discord.js - 经济排行榜命令:未定义
- html - 悬停锚标记更改另一个锚标记样式
- ruby - 在 Ruby 的等式中找到一个神秘的数字