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)

/react-hooks-data/

    Package Sidebar

    Install

    npm i react-hooks-data

    Weekly Downloads

    10

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    288 kB

    Total Files

    16

    Last publish

    Collaborators

    • ledoux