javascript - 获取导入组件的高度
问题描述
如何获取getBoundingClientRect()
导入的组件?或者至少访问里面的元素
如果它在组件本身内部使用,我可以得到它
FixedTopNavigation.js
constructor(props) {
super(props);
this.state = {
height: 0,
}
}
componentDidMount() {
console.log(this.topNav.getBoundingClientRect());
}
render() {
return (
<nav ref={(elem) => this.topNav = elem} id="topNav" className="fixed-top navbar navbar-expand-md navbar-light bg-light">
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#sideNav" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
<span className="navbar-toggler-icon"></span>
</button>
<a className="navbar-brand" href="/">Biometrics</a>
</nav>
)
}
但是在将该组件导入另一个文件后使用时:
仪表板.js
constructor(props) {
super(props);
this.state = {
height: 0,
}
}
componentDidMount() {
console.log(this.topNav.getBoundingClientRect());
}
render() {
return (
<FixedTopNavigation ref={(elem) => this.topNav = elem}/>
)
}
收到错误:
TypeError:this.topNav.getBoundingClientRect 不是函数
使用后console.log()
,似乎不再返回元素。我搜索的所有教程都指向第一个代码语法。
也试过this.topNav = React.createRef()
了,还是一样的错误
解决方案
有一些好方法可以做你想做的事,比如 Redux、Context、全局变量、示例:window.myApp.topNavBar.height = 100
我可能会选择这个:
import React from "react";
import { render } from "react-dom";
class Target extends React.Component {
render() {
return <h1 className={this.props.className}>TARGET</h1>;
}
}
class App extends React.Component {
componentDidMount() {
console.log(
"RESULT: ",
document.querySelector(".target").getBoundingClientRect()
);
}
render() {
return <Target className="target" />;
}
}
render(<App />, document.querySelector(".root"));
你甚至可以删除该属性。
你可以在这里看到这个工作:https ://codesandbox.io/s/5xx50pw984?fontsize=14
编辑
对于那些使用像 Redux 这样的状态管理器的人,请避免使用这种代码,并尝试将所有内容都放在你的 redux 状态中。我建议避免反应状态。你可以阅读 这篇文章
推荐阅读
- deprecated - 从 grails 1.1 迁移到 4.0.11
- javascript - 从动态 django 脆皮表单集中删除标签
- spring-batch - JMS 出站网关 - 接收来自两个作业实例的回复
- r - 如何在 echart 绘图上嵌入图像?
- cuda - 为什么 cuda 内核 w/i 发散的性能优于 w/o 发散?
- shell - 提交后如何tortoiseSVN更新?
- php - laravel 使用密钥加密解密密码
- nginx - 带有 certbot 的新安装的 Nginx 反向代理显示 404 错误页面
- sql - 使用 group by 查询从表中选择特定行
- computer-science - 1946 年的浮点数保存