chil
@chil
Junior

Получить и обработать даные, React/Redux?

Добрый вечер всем! Подскажите пожалуйста как в React/Redux правильно получить данные? Данные должны меняться по селекту. Понимаю, что наверное, аякс запрос должен быть в actions. Знание redux по сути минимальные, но нужно сделать правильно. Поэтому подскажите куда дальше должны идти даные, как и где обрабатываться?
Очень запутался в этом... буду благодарен какой-то пример.
Второй вопрос если данные в xml-формате, как с ними работать или как конвертировать в json?
Возможно, в redux для этого есть какой-то свой подход?
Заранее благодарю!
  • Вопрос задан
  • 482 просмотра
Решения вопроса 1
@aphows
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,
                })
            });
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект