1.2.0 • Published 6 years ago

react-sync-fetch v1.2.0

Weekly downloads
2
License
ISC
Repository
github
Last release
6 years ago

react-sync-fetch

Standard - JavaScript Style GuideBuild Status

simple async or sync fetch with async/await feature

Install

npm install --save react-sync-fetch

Example Usage

## configureStore.js

import Redux, {
  createStore,
  applyMiddleware,
  compose
} from 'redux'
import fetchMiddleware, {
  STATUS_REQUEST,
  STATUS_SUCCESS,
  STATUS_FAILURE,
  dispatchError
} from 'react-sync-fetch'
const API_CODE_NEED_LOGIN = 206

dispatchError((error = { code: -1, message: 'unknown error' }) => {
  if (error.code && error.code === API_CODE_NEED_LOGIN) {
    location.href = '/login' + encodeURIComponent(location.href)
    return true
  }
  return false
})

const composeArray = [
  applyMiddleware(fetchMiddleware)
]
const store = compose.apply(Redux, composeArray)(createStore)(reducer)

## action
import { wrapAction } from 'react-sync-fetch'
const FETCH_SOMETHING = 'fetch_something'
const fetchGet = (params) => {
  return {
    type: FETCH_SOMETHING,
    endpoint: '/api',
    requestData: params,
    method: 'GET' // 'GET', 'POST'
  }
}

const fetchSyncGet = (params, params1, param2, params3) => {
  return {
    type: 'fetch',
    syncEvents: [
      [{
        type: FETCH_SOMETHING,
        endpoint: '/api1',
        mergeRequestData: (lastResult) => {
          let requestData = assign(params, lastResult)
          return requestData
        },
        method: 'GET' // 'GET', 'POST'
      }],
      [{
        type: FETCH_SOMETHING,
        endpoint: '/api2',
        mergeRequestData: (lastResult) => {
          let requestData = assign(params1, lastResult)
          return requestData
        },
        method: 'GET' // 'GET', 'POST'
      }, {
        type: FETCH_SOMETHING,
        endpoint: '/api3',
        mergeRequestData: (lastResult) => {
          let requestData = assign(params2, lastResult)
          return requestData
        },
        method: 'GET' // 'GET', 'POST'
      }],
      [{
        type: FETCH_SOMETHING,
        endpoint: '/api4',
        mergeRequestData: (lastResult) => {
          let requestData = assign(params4, lastResult[0])
          return requestData
        },
        method: 'GET' // 'GET', 'POST'
      }]
    ]
  }
}

## reducer

const FETCH_SOMETHING = 'fetch_something'

function reducer(state, action) {
  if (action.type === FETCH_SOMETHING) {
    switch (state.status) {
      case STATUS_REQUEST
        // fetch start
        break
      case STATUS_SUCCESS:
        // fetch success
        break
      case STATUS_FAILURE:
        // fetch error
        break
    }
  }
}
1.2.0

6 years ago

1.1.0

6 years ago

1.0.14

6 years ago

1.0.13

7 years ago

1.0.12

7 years ago

1.0.11

7 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.0

7 years ago