2016-05-01 7 views
11

Я использую React, Redux с нескольких месяцев. Одной из наиболее запутанной части экосистемы является поток асинхронных данных. Есть много отличных решений, и выбор правильного решения для вашей проблемы - непростая.В чем разница между Redux-Thunk и Redux-Promise при использовании с Axios apis?

В моем приложении у создателей действия в основном есть асинхронный вызов axios [ajax] для моего внутреннего конца. Внедрение Redux-Promise в качестве промежуточного программного обеспечения решает проблему потока асинхронных данных.

Учитывая масштабируемое приложение, мне может понадобиться связать несколько вызовов аксиом в моем создателе действия. Я думаю, что я все еще могу использовать Redux-Promise в качестве промежуточного программного обеспечения, и это позаботится об асинхронном потоке данных в моем приложении.

В целом команда более склонна к использованию Redux-Thunk, что я считаю более сложным синтаксисом для этой проблемы. Мне нужны предложения по оценке этих двух рамок, учитывая, что большинство моих создателей действия делают только аксиомы (обещания). Я видел много дискуссий о Redux-thunk here. Я понял, как может быть полезно. , Но мне нужно больше разъяснений, оценивая Redux-Promise и Redux-Thunk вместе при использовании только для Promises. Какое промежуточное ПО лучше в такой ситуации и почему? Какие преимущества я получаю от Redux-Thunk над Redux-Promise? Или нет?

ответ

19

Redux Promise удобен для отправки трех действий (запрос, успех, отказ) без написания этого кода вручную.

Redux Thunk удобен для потока данных async, когда вы выражаете одного создателя действия в ожидании другого создателя действия. Он также позволяет вам читать текущее состояние условных отправлений и ранних выплат.

Вы можете использовать их вместе или использовать их в частности. Я бы рекомендовал начать с Redux Thunk, потому что он предлагает больше контроля и более универсален. После того, как вы его заработаете, вы можете рассмотреть , добавив Redux Promise, чтобы удалить часть кода шаблона, связанного с отправкой трех видов действий. Если вы обнаружите, что он не покупает вас много, удалите его. С другой стороны, если вы заметите, что все создатели Thunk action просто отправили одно обещание, вы можете удалить Redux Thunk.

Если это все еще запутанно, я рекомендую использовать Redux Thunk, пока вы не будете более комфортно работать с промежуточным программным обеспечением.

+1

Спасибо за разъяснение. Как вы упомянули, создатели действий просто отправляют одно обещание до сих пор, и поэтому Redux-Promise кажется достаточным решением. Но когда вы говорите о Redux-Thunk, предлагающем больше контроля, вы имеете в виду, что он дает вам способ получить статус, а также отправлять действия, когда нам нужно? –

+0

@ DishantSoni Да, точно. –

+0

@DanAbramov вы можете показать пример рендеринга некоторых данных на страницу? У меня есть и конечная точка, но я не могу заставить ее работать. Вот пример того, что я пытаюсь сделать. [link] (https://gist.github.com/anthonybrown/5d5d067718161a4a757c55329714be46) –