Не могу понять суть промежуточного программного обеспечения Redux-thunk

Все:

Я новичок в Redux, когда пытаюсь следовать руководству по асинхронному действию http://redux.js.org/docs/advanced/AsyncActions.html

Существует концепция, называемая преобразователем, я не совсем понимаю, зачем нам нужен преобразователь для выполнения асинхронного действия, почему мы не можем просто отправить сигнал инициализации, затем получить данные, а затем отправить сигнал завершения в обещании из данных выборки?

function fetchDataAction(dispatch){
    dispatch({
        type: "START"
    })
    fetch("DATA_URL")
        .then(function(res){return res.json();})
        .then(function(json){
            dispatch({
                type: "SUCCESS",
                data: json
            })
        })
}

Спасибо


person Kuan    schedule 16.06.2016    source источник
comment
Вы в значительной степени описали thunk в своем вопросе. Получение данных происходит асинхронно, поэтому отправка может быть запущена только после того, как мы получим ответ.   -  person Mario Tacke    schedule 17.06.2016
comment
@MarioTacke Спасибо, так что thunk - это просто модное слово, чтобы сделать то, что я здесь написал? И мне вообще не нужен thunk, если большая часть моей операции - это просто выборка данных?   -  person Kuan    schedule 17.06.2016
comment
thunks - это больше, чем просто модное слово. Насколько я понимаю, как работает redux, все действия должны возвращать действие, которое может быть немедленно использовано редуктором (ами). Поскольку асинхронное действие возвращает данные в более поздний момент (читай: не сразу), нам нужно открыть путь для выполнения определенного действия после получения данных. Для этого во многих проектах используется redux-thunk промежуточное ПО.   -  person Mario Tacke    schedule 17.06.2016


Ответы (1)


Хранилище Redux распознает только простой объект как действие. Следовательно, вы можете разместить в магазине только dispatch объектов. redux-thunk учит магазин распознавать функцию как действия. Дополнительную информацию о redux-thunk читайте у самого автора: Как отправить действие Redux с тайм-аутом?

Другой способ думать об этом состоит в том, что redux-thunk предоставляет вам способы доступа dispatch напрямую, чтобы вы могли отправлять все, что захотите.

Без redux-thunk создатели ваших действий не имеют dispatch в качестве параметра. В этом случае fetchDataAction работает только потому, что redux-thunk передаёт dispatch в качестве параметра.

person xiaofan2406    schedule 17.06.2016