将函数组件转换为类组件

Posted

技术标签:

【中文标题】将函数组件转换为类组件【英文标题】:convert function components to class components 【发布时间】:2021-12-16 17:06:46 【问题描述】:

我这里有这个类组件

class App extends React.Component 
  getHowler() 
    this.player.howler;
  

  getDuration() 
    this.player.duration();
  

  getSeek() 
    this.player.seek();
  

  setSeek() 
    this.player.seek(0.5);
  
  // This sound file may not work due to cross-origin setting
  render() 
    return (
      <ReactHowler
        src="http://goldfirestudios.com/proj/howlerjs/sound.ogg"
        playing=true
        ref=(ref) => (this.player = ref)
      />
    );
  

我希望将其转换为功能组件。我想在函数组件中使用 react howler seek function。我怎样才能做到这一点?我从 react 中尝试了useRef,它给我一个错误。

该功能应该像这样工作: 每次我交换曲目时,它都应该从头开始播放

【问题讨论】:

【参考方案1】:
const App = () => 
  const player = useRef(null)

  const getHowler = () => 
    player.current.howler;
  

  const getDuration = () => 
    player.current.duration();
  

  const getSeek () => 
    player.current.seek();
  

  const setSeek = () => 
    player.current.seek(0.5);
  

  render() 
    return (
      <ReactHowler
        src="http://goldfirestudios.com/proj/howlerjs/sound.ogg"
        playing=true
        ref=player
      />
    );
  

player.current === null 时您可能需要尽快返回 也可以将组件包裹在Error边界组件中 如果你想使用已经在生产中使用的完整功能组件,请随意使用包我写了一个名为atpro-howler的包,它是通过react-aptor与react集成的howler

【讨论】:

谢谢,伙计。这行得通。我错过了.current 部分。这就是为什么它不起作用 很高兴听到这个消息,请随意使用提到的包,它们是完全免费的,开源的。如果您不介意就您的用例给我反馈。如果它对你有帮助,请在 Github 上给我们一个开始,或者与你的朋友分享这个包:) 这与 Next Js 的兼容性如何? 我可能工作得像个魅力,但如果遇到任何问题,请告诉我github.com/amirHossein-Ebrahimi/raptor-howler/issues

以上是关于将函数组件转换为类组件的主要内容,如果未能解决你的问题,请参考以下文章

将功能组件代码转换为类组件代码

将功能组件转换为类组件(ReactJS)的问题

如何将此功能组件转换为类

将 React 类组件转换为函数组件时出错

如何将 React 类组件转换为函数组件

如何将指针函数转换为类函数? C++