Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Refetty - React

React Hooks to make data fetch easy

Usage

Install yarn add @refetty/react

usePromise

Use control from @refetty/async under the hood and bypass all args to them. It's will make an abort call on component unmout too.

import { usePromise } from '@refetty/react'

const List = () => {
  const [result, { loading }, fetch] = usePromise(getUsers)

  if (loading) {
    return <Loading />
  }

  return result && result.data && result.data.length
    ? result.data.map(user => <UserCard {...user} />)
    : <EmptyList />
}

useFetch

Use usePromise, but change the first returned array item to return only the request data (request.data).

- import { usePromise } from '@refetty/react'
+ import { useFetch } from '@refetty/react'

const List = () => {
-  const [result, { loading }, fetch] = usePromise(getUsers)
+  const [data, { loading }, fetch] = useFetch(getUsers)

  if (loading) {
    return <Loading />
  }

-  return result && result.data && result.data.length
+  return data && data.length
-    ? result.data.map(user => <UserCard {...user} />)
+    ? data.map(user => <UserCard {...user} />)
    : <EmptyList />
}

If you need the statusCode or anytihng else from promise response, you can access it from named result prop in state item

  const [data, { result }, fetch] = useFetch(getUsers)

Both hooks usePromise and useFetch will call your promise on component mount. So, if you don't want this behavior and need call promise only when you need (maybe useful when showing data depends on users interaction), you can use lazy option:

  const [data, { loading, status }, fetch] = useFetch(getUsers, { lazy: true })

In this case, loading start as false and status ìdle