javascript - React - 如何获得样式化组件的顶部位置?

标签 javascript css reactjs

当您不了解React 方式时,以前很简单的事情会变得相当复杂。

我正在尝试创建一个组件,使其在到达页面顶部时充当粘性页眉或页脚。

目前我很满足于添加以下内容:

  componentDidMount() {
    window.addEventListener('scroll', this.onScroll, false);
  }

  componentWillUnmount() {
    window.removeEventListener('scroll', this.onScroll, false);
  }

但是,我在如何获得样式化组件的滚动顶部位置方面遇到了瓶颈。假设我有一个名为 Container 的样式化组件,它输出了一个表单,我通常只添加一个数据属性并执行如下操作:

const container = document.getElementbyTag("data-sticky-container")
const position = container.offsetTop 

我将如何在 React 中执行此操作?


更新

现在使用 ref。我遇到了一个没有定义 current 的问题:

  constructor(props) {
    super(props);
    this.optionBox = React.createRef();
  }

  componentDidMount() {
    window.addEventListener('scroll', this.onScroll, false);
  }

  componentWillUnmount() {
    window.removeEventListener('scroll', this.onScroll, false);
  }

  onScroll() {
    console.log(this.optionBox.current.offsetTop);
  }

最佳答案

在 React 中,您将为您的组件使用一个引用:https://reactjs.org/docs/refs-and-the-dom.html

你会得到这样的东西:

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.myRef = React.createRef();
  }

  getOffset = () => {
    console.log(this.myRef.current.offsetTop);  
  }
  render() {
    return <Container ref={this.myRef} onClick={this.getOffset} />;
  }
}

现在您可以在 onScroll 函数内通过 this.myRef.current.offsetTop 访问容器 offsetTop,就像在 getOffset

关于javascript - React - 如何获得样式化组件的顶部位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005723/

相关文章:

jquery - 在 css 之前加载页面标题

reactjs - 抽屉导航器 : Change Background Color

javascript - 当我想要一个字符串时用于响应的 Html

javascript - 检查行时从表中的特定列获取数据

javascript - 如何在 ReactJs 中渲染 onclick 提交按钮的函数?

reactjs - React-三纤维自定义着色器中的 WebGL 在 Prop 更改或窗口大小调整时卡住

javascript - 查找日期晚于当前日期的对象

javascript - AJAX表单提交问题

css - 在 SendGrid Web API 中将样式应用于 html 电子邮件

javascript - 使用 DIV 中的按钮删除 DIV