【发布时间】:2021-10-31 05:51:42
【问题描述】:
我正在尝试使用一个复选框来动态更改另一个标签的类名。 有我的代码:
import "bootstrap/dist/css/bootstrap.min.css";
class Task extends Component {
state = {
task: "DevApp",
};
isChecked = () => {
console.log("True");
return true;
};
render() {
return (
<React.Fragment>
<span className="bg-warning">{this.state.task}</span>
<label>
<input type="checkbox" id="myCheck" />
</label>
<span className={this.getClassBadge()}>Done</span>]
</React.Fragment>
);
}
getClassBadge() {
var x = document.getElementById("myCheck").checked;
if (x) {
return "badge m-2 bg-warning";
} else {
return "badge m-2 bg-primnary";
}
}
}
export default Task;
我明白了
TypeError: Cannot read properties of null (reading 'checked')
我试过这种方法:
render() {
return (
<React.Fragment>
<span className="bg-warning">{this.state.task}</span>
<label>
<input type="checkbox" id="myCheck" />
</label>
<span className={this.getClassBadge()}>Done</span>]
</React.Fragment>
<script>
getClassBadge() {
var x = document.getElementById("myCheck").checked;
if (x) {
return "badge m-2 bg-warning";
} else {
return "badge m-2 bg-primnary";
}
}
</script>
);
}
但所有内容都带有红色下划线。 我想要一个复选框,如果选中该复选框,则下一个跨度的 className 将更改为具有很酷的效果。 有人可以帮帮我吗? 如果它非常基本,我很抱歉,但我才刚刚开始:)
【问题讨论】:
-
欢迎来到 SO!我无意冒犯,但您可能需要花一些时间阅读一些 React 教程,以更好地理解工作流程。 一般来说,在使用 React 时,您不应该直接进行 DOM 查询或操作——如果您看到
document.getElementById或类似的东西,这很好地表明您可能正在遵循反模式。 React(以及大多数 MV* 库)的想法是,您拥有一个数据模型,然后将 UI 连接到该数据模型,然后您只需更新数据模型,UI 就会相应地更新。 -
我建议你浏览一些包含复选框的实际反应代码。因为这不是正确的做法。
标签: javascript css reactjs checkbox