@refetty/react v1.0.0-rc.12
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
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago