Redux используется как хранилище для данных, то есть ваша задача получить данные, обработать их, а потом занести их в state. Дальше можно использовать эти данные уже во вьюхах в обработанном виде.
Асинхронность реализуется через middleware, самый распространенный - redux-thunk от gaeron. Он позволяет возвращать из экшна не объект, а функцию, в которую передастся dispatch, и через который можно будет вызвать изнутри этой функции другие экшны.
import convert from 'xml-js'; // https://www.npmjs.com/package/xml-js
class apiClient {
get(url) {
return Promise.resolve(/* do something async */)
}
}
// actions
export function getData() {
return (dispatch, getState) => {
dispatch({
type: 'data/LOAD_STARTED',
});
apiClient.get('/api')
.then((response) => {
const data = convert.xml2json(response.data, {compact: true, spaces: 4});
dispatch({
type: 'data/LOAD_SUCCESS',
payload: data
})
})
.catch((e)=> {
dispatch({
type: 'data/LOAD_ERROR',
payload: e,
})
});
}
}