reactjs - 如何从子组件检测 DOM 中呈现的父组件
问题描述
我有几个子组件需要在父组件渲染后设置样式。样式与位置和大小相关,并通过确定页面中的父组件高度/宽度来计算。因此,我需要先渲染父组件,然后才能设置子组件的样式。
我不能让子组件成为父组件的一部分。
我尝试在父组件上使用 ref,然后在 componentDidMount() 期间在每个项目组件上触发 props.onItemRendered() 回调,但我发现在所有子组件安装后父组件调用 componentDidMount() - 因此我的父项目参考为空。
我应该如何解决这个问题?我没主意了
解决方案
在渲染父级之前不会渲染子级。如果您从不渲染父级,则永远不会渲染子级。
您可以在子级上使用百分比 CSS 值,它将相对于父级。
像这样的东西:
#parent {
position: relative;
height: 100px;
width: 100px;
border: 2px solid black;
background-color: blue;
}
#child {
position: absolute;
width: 50%;
height: 50%;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
background-color: red;
border: 1px dashed white;
}
<div id='parent'>
<div id='child'></div>
</div>
推荐阅读
- php - 如何将值从 Laravel 的控制器发送到 Vue.js?
- reactjs - 如何在任何页面上使用带有 mobx 的 next.js getInitialProps 方法?
- python - 未找到请求的安全定义,Future Option Python
- html - 我想要更新表单中的预选选项
- unity3d - 如何禁用瓷砖地图上单个瓷砖的碰撞器?
- kubernetes - minikube 中的 TCP 和 UDP 路由,不使用 hostNetwork
- mysql - 使用 INNER 连接的 SQL 查询耗时太长
- visual-studio-code - VSCode Python 智能感知
- android - 是否可以将按钮放置为 layout_above="view1 && view2"?
- node.js - 如何在不使用 Auth0 通用登录的情况下配置 auth0 身份验证/授权?