react-wp-rest-api-provider
v0.0.5
Published
React Component for WordPress Rest API using provider - consumer pattern.
Maintainers
Readme
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
datais an array containing fetched data. For example post items.headerEntriescontain headers from the response. See then Pagination section bellow.loadingis a boolean value, indicating the status of the request.erroris 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.
