react-hooks-data

1.2.1 • Public • Published

react-hooks-data

A lib for fetching normalized data in components via react hooks.

See the full documentation for further complex use cases with several collections of data.

CircleCI npm version

Basic Usage

Define your components as children of the DataContext.Provider:

import { DataContext } from 'react-hooks-data'
 
import Foos from './foos'
 
const Root = () => (
  <DataContext.Provider config={{ rootUrl: "https://momarx.com" }}>
    <Foos />
  </DataContext.Provider>
)
 
export default Root

Where Foos will access to the data elements:

import React, { Fragment, useState } from 'react'
import { DataContext } from 'react-hooks-data'
 
const Foos = () => {
  const { data, dispatch } = useContext(DataContext)
  const { foos } = data || {}
  const [error, setError] = useState(null)
 
  dispatch(requestData({
    apiPath: '/foos',
    handleFail: (state, action) => setError(action.error)
  }))
 
  if (error) {
    return error
  }
 
  return (
    <Fragment>
      {(foos || []).map(foo => (
        <div className="foo" key={foo.id}>
          {foo.text}
        </div>
      ))}
    </Fragment>
  )
}

Usage with withData

Just rewrite your foos component as a container-like one:

  const Foos = ({ foos }) => {
    const { dispatch } = useContext(DataContext)
    ...
  }

And use the withData hoc in order to make it more react-redux-like:

import { withData } from 'react-hooks-data'
 
import Foos from './foos'
 
const mapDataToProps(data, ownProps) {
  return {
    foos: (data.foos || []).filter(foo => foo.type === ownProps.type)
  }
}
 
const FoosContainer = withData(mapDataToProps)(Foos)

Package Sidebar

Install

npm i react-hooks-data

Weekly Downloads

2

Version

1.2.1

License

MIT

Unpacked Size

288 kB

Total Files

16

Last publish

Collaborators

  • ledoux