DEV Community

MD Taseen Khan
MD Taseen Khan

Posted on • Originally published at reactjsexample.com on

React component for wavesurfer.js

@wavesurfer/react

React component for wavesurfer.js

A React component for wavesurfer.js.

It makes it easy to use wavesurfer from React. All of the familiar wavesurfer options become React props.

You can subscribe to various wavesurfer events also via props. Just prepend an event name with on, e.g. ready -> onReady. Each event receives a wavesurfer instance as the first argument.

Installation

With yarn:

yarn add @wavesurfer/react
Enter fullscreen mode Exit fullscreen mode

With npm:

npm install @wavesurfer/react
Enter fullscreen mode Exit fullscreen mode

Usage

As a component:

import WavesurferPlayer from '@wavesurfer/react'

const App = () => {
  const [wavesurfer, setWavesurfer] = useState(null)
  const [isPlaying, setIsPlaying] = useState(false)

  const onReady = (ws) => {
    setWavesurfer(ws)
    setIsPlaying(false)
  }

  const onPlayPause = () => {
    wavesurfer && wavesurfer.playPause()
  }

  return (
    <>
      <WavesurferPlayer
        height={100}
        waveColor="violet"
        url="/my-server/audio.wav"
        onReady={onReady}
        onPlay={() => setIsPlaying(true)}
        onPause={() => setIsPlaying(false)}
      />

      <button onClick={onPlayPause}>
        {isPlaying ? 'Pause' : 'Play'}
      </button>
    </>
  )
}
Enter fullscreen mode Exit fullscreen mode

Alternatively, as a hook:

import { useRef } from 'react'
import { useWavesurfer } from '@wavesurfer/react'

const App = () => {
  const containerRef = useRef()

  const { wavesurfer, isReady, isPlaying, currentTime } = useWavesurfer({
    container: containerRef,
    url: '/my-server/audio.ogg',
    waveColor: 'purple',
    height: 100',
  })

  const onPlayPause = () => {
    wavesurfer && wavesurfer.playPause()
  }

  return (
    <>
      <div ref={containerRef} />

     <button onClick={onPlayPause}>
       {isPlaying ? 'Pause' : 'Play'}
     </button>
    </>
  )
}
Enter fullscreen mode Exit fullscreen mode

Docs

https://wavesurfer.xyz

GitHub

View Github

Top comments (0)