Nox is a REST client for React. It is inspired from the apollo client, especially in its usage
Warning : This is a very early WIP !
This package is inspired by React Apollo, because I found the usage quite nice in the front end, but I was using a REST API, I thought it'd be a good idea to do so ... As for the name, it's my dog's
To install the module, simply enter the following command :
# Yarn
$ yarn install nox
# Npm
$ npm install nox --save
In order to use the client, you need to wrap your application inside a NoxProvider
, here is an example :
import React from 'react'
import { NoxProvider } from 'nox'
import App from './App'
export default () => (
<NoxProvider options={{
baseURL: 'http://localhost:1337'
}}>
<App />
</NoxProvider>
)
The provider accepts the following options :
baseURL
: Your API base URL, with the schemetimeout
: Default timeout for requestheaders
: Default headers for the requestcacheTimeout
: The time (in milleseconds) that the object should be keep in cache (Default 10 minutes)
To use the client, you need to wrap your component using the noxConnect
function, just like in the following example
import React, { Component } from 'react'
import { map } from 'lodash'
import { noxConnect } from 'nox'
import Product from './Product'
class Display extends Component {
render() {
const { noxData } = this.props;
if (noxData.loading) {
return (
<h1>Loading</h1>
)
}
const { data } = noxData
return (
<div>
<div>
{map(data, product => (<Product {...product} key={product._id}/>))}
</div>
</div>
);
}
}
export default noxConnect({
method: 'GET',
path: '/products'
})(Display)
The available options are :
method
: The HTTP Verb to use, case unsensitivepath
: The path to requestcache
: A boolean to indicate to use cache or not (default totrue
)subscribe
: Should the request subscribe to the response (default totrue
). Useful for notGET
requestheaders
: The request headerspollInterval
: Should be pulled regularlycacheTimeout
: The specfic cache timeout for the request
To access the REST client directly, you can wrap your component with the withNoxClient
function, which will make the client accessible in the component's props as noxClient
import React from 'react'
import { withNoxClient } from 'nox'
class ComponentWithClient extends React.Component {
render () {
// Access the client in this.props.client
return (
<p>Client is accessible</p>
)
}
}
export default withNoxClient(ComponentWithClient)
Nox de Valvygne is my german shepherd dog, he is used to come to the office, so this package is a little tribute for him
- Make tests
- ...