Skip to content

rolandjitsu/react-fetch-streams

Repository files navigation

react-fetch-streams

A react hook for using the Streams API with the Fetch API to stream data from a server.

npm GitHub Workflow Status Coveralls Github Branch

Table of Contents

Installation


You can install this package from NPM:

npm add react-fetch-streams

Or with Yarn:

yarn add react-fetch-streams

CDN

For CDN, you can use unpkg:

https://unpkg.com/react-fetch-streams/dist/index.min.js

The global namespace for react-fetch-streams is reactFetchStreams:

<script type="text/javascript" src="https://unpkg.com/react-fetch-streams/dist/index.min.js"></script> <script type="text/javascript"> const {useStream} = reactFetchStreams; ... </script>

Usage


Stream some data from some server:

import React, {useCallback, useState} from 'react'; import {useStream} from 'react-fetch-streams'; const MyComponent = props => { const [data, setData] = useState({}); const onNext = useCallback(async res => { const data = await res.json(); setData(data); }, [setData]); useStream('http://myserver.io/stream', {onNext}); return ( <React.Fragment> {data.myProp} </React.Fragment> ); };

You can also pass the fetch request init props using fetchParams:

import React, {useCallback, useState} from 'react'; import {useStream} from 'react-fetch-streams'; const fetchParams = {mode: 'cors'} const MyComponent = props => { const [data, setData] = useState({}); const onNext = useCallback(async res => { const data = await res.json(); setData(data); }, [setData]); useStream('http://myserver.io/stream', {onNext, fetchParams}); return ( <React.Fragment> {data.myProp} </React.Fragment> ); };

For more examples, please check the tests.

Browser Support


You can expect this hook to work wherever the following APIs are supported:

Check browserslist.dev for an overview.

Contribute


If you wish to contribute, please use the following guidelines: