Tanto quanto eu sei e corrijo-me se estou errado, redux-thunk é um middleware que nos ajuda a despachar funções assíncronas e valores de depuração na própria ação, enquanto quando eu usei redux-promessa não pude criar funções assíncronas sem implementar minhas próprias como Action lança uma exceção de despachar apenas objetos simples.
Quais são as principais diferenças entre esses dois pacotes? Há alguma vantagem em usar os dois pacotes em um aplicativo de reação de página única ou usar redux-thunk seria o suficiente?
fonte
Você provavelmente vai querer / precisar dos dois juntos em seu aplicativo. Comece com redux-promessa para tarefas assíncronas de produção de promessa de rotina e, em seguida, amplie para adicionar Thunks (ou Sagas, etc.) conforme a complexidade aumenta :
redux-promise
irá melhorar sua vida e simplificar isso, rápido e fácil. (Resumindo, em vez de você precisar pensar em 'desembrulhar' suas promessas quando elas forem resolvidas, em seguida, escrever / despachar os resultados, redux-promessa (-middleware) cuida de todas essas coisas chatas para você.)Nesses casos, o benefício de
redux-thunk
é permitir que você encapsule a complexidade dentro de seu criador de ação .Mas observe que se o Thunk produz e despacha promessas, você vai querer usar as duas bibliotecas juntas :
redux-promise
trataria então de desembrulhar no (s) redutor (es) as promessas individuais geradas por seu Thunk, para evitar o clichê que isso implica. (Você poderia fazer tudo no Thunks, compromise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... mas por que faria?)Outra maneira simples de resumir a diferença nos casos de uso: o início vs. o fim do ciclo de ação Redux :
redux-promise
é para o fim do seu fluxo, uma vez que tudo foi reduzido a promessas simples, e você só quer desembrulhá-las e armazenar seu valor resolvido / rejeitado na lojaNOTAS / REFS:
redux-promise-middleware
que é uma implementação mais completa e compreensível da ideia por trás do originalredux-promise
. Está em desenvolvimento ativo e também é complementado porredux-promise-reducer
.redux-saga
, que é muito semelhanteredux-thunk
, mas é baseado na sintaxe de funções geradoras. Novamente, você provavelmente o usaria em conjunto comredux-promise
.fonte
Divulgação completa: Eu sou relativamente novo no desenvolvimento do Redux e tive problemas com essa questão sozinho. Vou parafrasear a resposta mais sucinta que encontrei:
ReduxPromise retorna uma promessa como carga útil quando uma ação é despachada e, em seguida, o middleware ReduxPromise trabalha para resolver essa promessa e passar o resultado para o redutor.
ReduxThunk, por outro lado, força o criador da ação a adiar o despacho real do objeto de ação para os redutores até que o despacho seja chamado.
Aqui está um link para o tutorial onde encontrei essas informações: https://blog.tighten.co/react-101-part-4-firebase .
fonte