yarn add -D debug
// App.js
import Debug from 'debug'
const log = Debug('src:App')
// In the browser console
> localStorage.debug='src:*'
// Refresh
- grab a fetch polyfill
yarn add fetch-ponyfill
// src/helpers/api/index.js
// write fetch helpers
export const get = (url, params) =>
fetch(url, params)
.then(res => res.json())
.then(res => parseResponse(res))
.catch(error => parseError(error))
export const post = (url, params) =>
fetch(url, {
...params,
method: 'POST',
})
.then(res => res.json())
.then(res => parseResponse(res))
.catch(error => parseError(error))
// src/helpers/api/index.js
import { reduce, camelCase } from 'lodash'
const parseResponse = ({ results }) =>
results.map((result) =>
reduce(result, (accumulator, value, key) =>
({
...accumulator,
[camelCase(key)]: value,
}),
{})
)
import { get } from './'
import Debug from 'debug'
const log = Debug('src:helpers:api:Users')
export const getUsers = () =>
get('https://randomuser.me/api?results=25')
.then(res => log(res))
export default class App extends PureComponent {
componentWillMount () {
getUsers()
}
...
}
yarn add react-redux redux redux-thunk redux-devtools-extension
- reducer
- action types
- action creator