0.0.4 • Published 4 years ago

redux-loadable v0.0.4

Weekly downloads
19
License
MIT
Repository
github
Last release
4 years ago
const LOAD_USERS = {
  START: 'LOAD_USERS',
  SUCCESS: 'LOAD_USERS_SUCCESS',
  FAILURE: 'LOAD_USERS_FAILURE'
}

const fetchUsers = ({ per_page, page }) =>
  fetch(`https://example.com/users?per_page=${per_page}&page=${page}`)
    .then(response => response.json())

const getUsers = ({ per_page, page }) => (dispatch) => {
  const query = { per_page, page }

  dispatch({
    type: LOAD_USERS.START,
    payload: { query }
  })

  return fetchUsers(query)
    .then((json) => {
      dispatch({
        type: LOAD_USERS.SUCCESS,
        payload: {
          data: json.data,
          count: json.total,
          query
        }
      })
    })
    .catch((error) => {
      dispatch({
        type: LOAD_USERS.FAILURE,
        payload: {
          error,
          query
        }
      })
    })
}

const dummyStore = (store = {}, action) => store
export const reducer = loadable(LOAD_USERS, {
  getQuery: ({ payload }) => payload && payload.query,
  getData: ({ payload }) => payload && payload.data,
  getCount: ({ payload }) => payload && payload.count,
  getError: ({ payload }) => payload && payload.error
})(dummyStore)

export const selector = loadableSelector('users')
0.0.3

4 years ago

0.0.4

4 years ago

0.0.2

6 years ago

0.0.1

6 years ago