0.0.5 • Published 5 years ago

react-wp-rest-api-provider v0.0.5

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

react-wp-rest-api-provider

React component with provider - consumer pattern, making it easy to pass data to you components.

Installation

Install the package from npm.

npm install -S react-wp-rest-api-provider

Usage

Provider

Wrap your application with RestApiProvider component.

import RestApiProvider from 'react-wp-rest-api-provider'
const App = () => (
  <RestApiProvider base="/wp-json/wp/v2">
    <YourApp />
  </RestApiProvider>
)

Consumer

Then inside your application where you need to request your data from rest API, use the RestApiRequest consumer component.

The component accepts two properties.

path property

A property defining rest API route. This property should be given as a string. For example for getting default WordPress articles you sould give the value "posts".

queryParams property

A property containg JSON object including desired query parameters. For example to get 1st 10 posts you can give {page: 1, per_page: 10}. To know what paramaters can be used see the agrs defined for your endpoint using GET method.

Data from consumer

Wrap you presentational component with RestApiRequest consumer component. It returns 4 properties to it's children which you can use. The properties are data, headerEntries, loading, error

  • data is an array containing fetched data. For example post items.
  • headerEntries contain headers from the response. See then Pagination section bellow.
  • loading is a boolean value, indicating the status of the request.
  • error is an object containing information about the error that might have occured during the request.

Example code

import { RestApiRequest } from 'react-wp-rest-api-provider'
const PostList = () => (
  <RestApiRequest path={'posts'} queryParams={{page: 1, per_page: 10}}>
    {({ data, headerEntries, loading, error }) => {

      if (error) return <p>Error</p>;
      if (loading) return <p>Loading...</p>;
      return (
          <YourPresentationalComponent
              data={data}
              headerEntries={headerEntries}
          />
      );
    }}
  </RestApiRequest>
)

Pagination information

The reason I created this package is that most of existing packages with similar functionality did not support WordPress way of dealing with pagination. The pagination information is returned in the headers of the rest API response. To get pagination information see the x-wp-totalpages and x-wp-total entries in the headerEntries returned by the component.

Is this legacy code?

This project is done because sometimes you are limited to legacy way of doing things. If you are looking something more sexy see the WPGraphQL plugin and Apollo Client.