useRequest

Hook that returns function for async actions. This hook is also part of resources API.

In case you don't need all data and actions (data, isLoading, setData, errors, clear...) that is provided by resource hooks, and you need just an action to send API request, you can use useRequest hook

Configuration

useRequest(resource, type)

resource

Resource config. Required

type

HTTP request type. Default GET.

  • GET
  • POST
  • PUT
  • DELETE
  • PATCH ...

Usage

GET request

// GET /api/users/me
import { useRequest } from '@cranium/resource'
const resourceConfig = {
endpoint: 'users/me',
namespace: 'currentUser'
}
function MyReactComponent () {
const fetchUser = useRequest(resourceConfig)
return <button onClick={()=>fetchUser()}>Get my data</button>
}

POST request

// POST /api/users
import { useRequest } from '@cranium/resource'
function MyReactComponent () {
const createUser = useRequest('users', 'POST')
return <button onClick={()=>createUser({ name: 'James Bond' })}>Create user</button>
}

PUT request

// PUT /api/users/132
import { useRequest } from '@cranium/resource'
const resourceConfig = {
endpoint: 'users/:uuid',
namespace: 'user'
}
function MyReactComponent () {
const updateUser = useRequest(resourceConfig, 'PUT')
return <button onClick={()=>updateUser({ name: 'James Bond', uuid: '132' })}>Update user</button>
}

DELETE request

// DELETE /api/users/132
import { useRequest } from '@cranium/resource'
const resourceConfig = {
endpoint: 'users/:uuid',
namespace: 'session',
reducer: 'none'
}
function MyReactComponent () {
const deleteUser = useRequest(resourceConfig, 'DELETE')
return <button onClick={()=>deleteUser({ uuid: '132' })}>Delete user</button>
}