当前位置:  开发笔记 > 编程语言 > 正文

如何相对于其父级定位React组件?

如何解决《如何相对于其父级定位React组件?》经验,为你挑选了1个好方法。

我有一个包含子React组件的父React组件.

Child

我需要将样式应用于子组件以将其定位在其父组件中,但其位置取决于父组件的大小.

render() {
  const styles = {
    position: 'absolute',
    top: top(),    // computed based on child and parent's height
    left: left()   // computed based on child and parent's width
  };
  return 
Child
; }

我不能在这里使用百分比值,因为顶部和左侧位置是孩子和父母的宽度和高度的函数.

React的方法是什么?



1> Seth..:

这个问题的答案是使用refs to Components上描述的ref .

根本问题是需要DOM节点(及其父DOM节点)才能正确定位元素,但在第一次渲染之后它才可用.从上面链接的文章:

执行DOM测量几乎总是需要使用ref来访问"本机"组件并访问其底层DOM节点.参考是可靠地实现这一目标的唯一实用方法之一.

这是解决方案:

getInitialState() {
  return {
    styles: {
      top: 0,
      left: 0
    }
  };
},

componentDidMount() {
  this.setState({
    styles: {
      top: computeTopWith(this.refs.child),
      left: computeLeftWith(this.refs.child)
    }
  })
},

render() {
  return 
Child
; }

这将在第一次渲染后立即正确定位元素.如果您还需要在更改道具后重新定位元素,则进行状态更改componentWillReceiveProps(nextProps).

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有