rehowl
Version:
Opinionated React wrapper for Howler.js
65 lines (41 loc) • 1.98 kB
Markdown
# Rehowl
An opinionated React wrapper for [howler.js](https://howlerjs.com/)
<!-- TOC -->
- [Rehowl](#rehowl)
- [Installation](#installation)
- [Documentation and Live Examples](#documentation-and-live-examples)
- [Quick start](#quick-start)
- [Rationale](#rationale)
<!-- /TOC -->
## Installation
Rehowl has react and howler as peer dependencies so that you can manage your own versions.
```sh
npm install howler rehowl
```
```sh
yarn add howler rehowl
```
## Documentation and Live Examples
Documentation and live examples are available at <https://tedmor.in/rehowl>
The source of these examples is [./stories](./stories)
## Quick start
It's recommended to view [the examples](https://tedmor.in/rehowl).
However, at its core Rehowl works by using `useHowl` or `<Howl />` to get a **howl instance**, then playing sounds off that instance with one or more `<Play />` components:
```js
import { useHowl, Play } from 'rehowl'
import bark from './assets/bark.mp3'
const Autoplay = () => {
const { howl, state } = useHowl({ src: bark })
return <Play howl={howl} />
}
```
See [the docs](https://tedmor.in/rehowl) for examples on how to play multiple sounds off of one howl, how to use audio sprites, and how to control volume, seek, etc.
## Rationale
When deciding to use Howler in a React project, a quick Google Search brings you to [react-howler](https://khoanguyen.me/react-howler/).
There are a few issues that make ReactHowler unsuitable for my needs:
- No support for playing multiple sounds on one Howl instance
- No support for audio sprites
- If you want to do more than the very basic API, you must break out the howler instance using refs
- Use of componentWillReceiveProps
Overall, it feels much more like a barebones wrapper for Howler that doesn't really give you any help when trying to integrate it into your components.
My main goals in this project are to make a library that feels like Howler, if Howler were built for React.