Skip to content

bsonntag/react-use-user-media

Repository files navigation

react-use-user-media

CircleCI

React hook for accessing user media.

Installation

Using npm:

$ npm install --save react-use-user-media

Using yarn:

$ yarn add react-use-user-media

Since this module uses React Hooks, to try this out you'll need to install at least the 16.8.0 version of react and react-dom:

$ yarn add react@^16.8.0 react-dom@^16.8.0

Usage

import React, { useEffect, useRef } from 'react';
import useUserMedia from 'react-use-user-media';

const constraints = { video: true };

function Example() {
  const { state, stream } = useUserMedia(constraints);
  const ref = useRef();

  useEffect(() => {
    if (state !== 'resolved' || !stream) {
      return;
    }

    ref.current.srcObject = stream;
    ref.current.play();
  }, [state, stream]);

  if (state === 'pending') {
    return <p>Waiting...</p>;
  }

  if (state === 'rejected') {
    return <p>Error: {error.message}</p>;
  }

  return <video ref={ref} />;
}

API

useUserMedia(Object): {
  error: Error,
  state: 'pending' | 'resolved' | 'rejected',
  stream: MediaStream
}

Receives a constraints object to call getUserMedia with and returns an object with the stream, the error and the state.

Note: When the constraints change a new media stream will be requested, so make sure you don't create a new constraints object on every render.

Contributing

Please feel free to submit any issues or pull requests.

License

MIT

About

React hook for accessing user media.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •