javascript - 如何在 React.Fragment 中通过 ID 获取元素?
问题描述
我试图在 React 中使用 ID 捕获元素,但我不能。
render() {
//Looping through all menus
let menuOptions = this.props.menuLists.map(menuList => {
return (
<li className="nav-item active" key={menuList.name}>
<a className="nav-link" href={menuList.anchorLink}>
{menuList.name}
</a>
</li>
);
});
return (
<React.Fragment>
<div id="animSec">
<canvas id="myCanvas" />
</div>
</React.Fragment>
);
}
我想调用myCanvas ID。
我试过了this.refs
,但它给我发送了undefined。我也试过react-dom
:
ReactDOM.findDOMNode(this.refs.myCanvas);
但一无所获。我首先调用findDOMNode
构造函数,但我尝试了componentDidMount
但什么也没得到。
解决方案
您可以使用Callback Refs来检索 ID:
class YourComponent extends React.Component {
constructor(props) {
super(props)
this.canvas = null
}
componentDidMount() {
console.log(this.canvas.id) // gives you "myCanvas"
}
render() {
return (
<React.Fragment>
<div id="animSec">
<canvas id="myCanvas" ref={c => {this.canvas = c}}></canvas>
</div>
</React.Fragment>
)
}
}
或者,对于 React v16.3+,您可以使用createRef():
constructor(props) {
super(props)
this.canvas = React.createRef()
}
componentDidMount() {
console.log(this.canvas.current.id) // gives you "myCanvas"
}
render() {
return (
<React.Fragment>
<div id="animSec">
<canvas id="myCanvas" ref={this.canvas}></canvas>
</div>
</React.Fragment>
)
}
推荐阅读
- javascript - 如何从组件内部访问道具
- python - Python - 将字符串类型转换为日期时间类型
- sql - 在 SQL (SSMS) 中动态追加新表的视图
- java - 依赖注入的区别
- r - R 中 ifelse() 的奇怪行为:何时评估值?
- graphql - 如何在 Hasura 中构建多对多插入突变?
- javascript - 如何保存 POST Jquery 结果?
- c# - 无法更新值:“主键”在尝试将实体状态更改为“已修改”时具有临时值
- java - 具有自定义上下文路径的 Spring Boot - 无法访问静态 Web 文件
- vue.js - 具有动态标题和内容编辑的 Vuetify 数据表