2016-06-16 2 views
0

Все:Невозможно получить точку Redux-Thunk промежуточного

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

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

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

Благодаря

+0

Вы в значительной степени описали тон в своем вопросе. Извлечение данных происходит асинхронно, поэтому отправка может быть инициирована только после получения ответа. –

+0

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

+1

thunks - это не просто причудливое слово. Я понимаю, что способ, с помощью которого действует сокращение, все действия должны возвращать действие, которое может быть немедленно уничтожено редуктором. Поскольку действие async возвращает данные в более поздней точке (чтение: не сразу), нам нужно открыть avenue для выполнения определенного действия после получения данных. Для этого в большом количестве проектов используется промежуточное ПО 'redux-thunk'. –

ответ

1

Redux магазин распознает только простой объект, как действия. Поэтому вы можете только dispatch объектов в магазин. redux-thunk учит магазин распознавать функцию как действие. Для получения дополнительной информации о redux-thunk, читать сам автор: How to dispatch a Redux action with a timeout?

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

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

Смежные вопросы