0

我是 React 新手,我正在尝试将下面的代码转换为函数组件,但它不起作用,我从未使用过类组件。谁能帮我转换一下?提前致谢。

import React from 'react'
import ReactDOM from 'react-dom'
import ScrollSnap from 'scroll-snap'

import './styles.css'

class App extends React.Component {
  container = React.createRef()

  bindScrollSnap() {
    const element = this.container.current
    new ScrollSnap(element, {
      snapDestinationY: '90%',
    }).bind()
  }

  componentDidMount() {
    this.bindScrollSnap()
  }

  render() {
    return (
      <div ref={this.container}>
      </div>
 )
}
4

1 回答 1

0

这是您需要做的:

  1. 替换为要在功能组件中createRef使用useRef的功能挂钩。
  2. 替换componentDidMountuseEffect()一个空数组作为依赖数组,它基本上在挂载时运行该代码一次。
const App = () => {
  const containerRef = React.useRef(null);

  const bindScrollSnap = () => {
    new ScrollSnap(containerRef , {
      snapDestinationY: '90%',
    }).bind()
  }
  React.useEffect(() => {
    bindScrollSnap();
  }, []);
  return <div ref={containerRef}></div>
}
于 2021-12-02T11:37:31.363 回答