3.0.19 • Published 4 years ago

@app-elements/with-request v3.0.19

Weekly downloads
31
License
ISC
Repository
github
Last release
4 years ago

withRequest

deprecated in favour of useRequest

Connect a Component to the result of an API request.

Installation

npm install --save @app-elements/with-request

Usage

import withRequest from '@app-elements/with-request'

// Here is a view that will render the result of our API request
const User = ({ id, name, email }) =>
  <div key={`user-${id}`}>
    <h1>{name}</h1>
    <p>{email}</p>
  </div>

// Now we use withRequest to wrap the User component in a 
// Higher order Component (HoC) that will call the User Component
// with the result of the API request.
const enhance = withRequest({
  // Define the url that should be called. You can pass a string, or
  // a function that's called with `props`. In this case, we'll use a
  // function so we can get the `{ id }` prop passed down by our Router.
  // Pretend the current URL is `users/3` where `3` is the `{ id }`
  endpoint: ({ id }) => `https://jsonplaceholder.typicode.com/users/${id}`
})

// Since withRequest is a HoC, it returns a function that expects
// to be called with a Component as its only param.
export default enhance(User)

Configuration

Internally, withRequest relies on a makeRequest function which is a small wrapper around XHR that returns a promise and the xhr reference. This allows withRequest to abort ongoing requests if a new one is requested. (In the future this should be swapped for Fetch and AbortController)

Anyway, makeRequest also let's you set an apiUrl so you can make requests with just a pathname: auth/login instead of https://my-cool-api.herokuapp.com/auth/login.

To enable this:

import { configure } from '@app-elements/with-request/makeRequest'

configure({ apiUrl: 'https://my-cool-api.herokuapp.com' })

Props

PropTypeDefaultDescription
endpointFunction or StringNoneThe url to call, or a function that returns a the url to call.
parseFunctionNoneA function to parse the API response. If provided, will be called with the signature (result, prevResult) and whatever it returns will be cached as the result.
3.0.19

4 years ago

3.0.18

4 years ago

3.0.17

4 years ago

3.0.16

4 years ago

3.0.13

4 years ago

3.0.14

4 years ago

3.0.15

4 years ago

3.0.12

4 years ago

3.0.10

4 years ago

3.0.11

4 years ago

3.0.8

4 years ago

3.0.9

4 years ago

3.0.7

4 years ago

3.0.6

4 years ago

3.0.5

4 years ago

3.0.4

4 years ago

3.0.3

4 years ago

3.0.2

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

3.0.0-alpha.0

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.0

5 years ago

2.0.19

5 years ago

2.0.18

5 years ago

2.0.17

5 years ago

2.0.16

5 years ago

2.0.15

5 years ago

2.0.14

5 years ago

2.0.13

5 years ago

2.0.12

5 years ago

2.0.11

5 years ago

2.0.9

5 years ago

2.0.8

5 years ago

2.0.7

5 years ago

2.0.6

5 years ago

2.0.5

5 years ago

2.0.4

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago