javascript - TypeError:无法读取未定义的属性“classList”
问题描述
我做了一个表单登录到 React 研究......我无法解决这个错误..
TypeError:无法读取未定义的属性“classList”
我的代码错误:
changeState(){
const {isLogginActive} = this.state;
if(isLogginActive) {
this.rightSide.classList.remove("right");
this.rightSide.classList.add("left");
} else {
this.rightSide.classList.remove("left");
this.rightSide.classList.add("right");
}
this.setState((prevState)=> ({ isLogginActive: !prevState.isLogginActive }));
}
有人可以帮助我……有一个解决方案……在 React 中做。
谢谢。
解决方案
我假设这rightSide
是使用createRef API定义的属性。
在这种情况下,classList
只能current
通过ref
.
this.rightSide.current.classList
与createRef()
异步一样,如果您在早期访问它,例如在componentDidMount
生命周期中,它可能会返回 null。
因此,添加 if 语句来检查总是更安全current
changeState(){
const {isLogginActive} = this.state;
if (this.rightSide.current) {
if(isLogginActive) {
this.rightSide.current.classList.remove("right");
this.rightSide.current.classList.add("left");
} else {
this.rightSide.current.classList.remove("left");
this.rightSide.current.classList.add("right");
}
this.setState((prevState)=> ({ isLogginActive: !prevState.isLogginActive }));
}
}
推荐阅读
- c# - 无法使用 Corel Draw 2020 Visual Studio 编辑器编辑 VSTA 应用程序
- javascript - .filter 没有以正确的顺序返回对象
- python - 使用python将数据从CSV导入MySQL
- ssl - 使用1and1,heroku,www域没有ssl
- jq - 在 JQ 中使用具有多个参数的 C 数学函数
- amazon-web-services - 如何配置 My AWS Lambda 以获取输入参数
- javascript - 如何通过更改“选择”标签中的某些内容来更新字段?
- excel - 显示超过列中行数的组合
- java - 具有相同名称aws s3的文件和文件夹之间的区别
- azure - 如何在 azure 管道中获取库变量/变量组的使用情况?