É store.dispatch em Redux síncrono ou assíncrono

101

Sei que essa é uma pergunta básica, mas não tive sorte em encontrar a resposta em outro lugar.

É store.dispatchsíncrono ou assíncrono Redux?

No caso de ser assíncrono, existe a possibilidade de adicionar um retorno de chamada após a ação ter sido propagada, como é possível com React?

ps-aux
fonte

Respostas:

87

AFAIK, a ação de despacho é síncrona. No caso de você estar disposto a abordar a chamada assíncrona, você pode usar o thunk-middleware em redux, onde o envio é fornecido como uma função de retorno de chamada que você pode invocar conforme sua conveniência. Para obter mais informações, verifique esta resposta no SO do próprio autor: Como despachar uma ação Redux com um tempo limite?

agpt
fonte
67

Ninguém sabe melhor do que o próprio código . =) Como você pode ver, dispatché absolutamente síncrono. O único aviso aqui é que a loja enhancerspode (e faz) substituir o dispatchmétodo. Por exemplo, dê uma olhada no applyMiddlewareenhancer , ele permite que você conecte middlewares substituindo o dispatchmétodo padrão por sua própria implementação. Embora eu nunca tenha visto nenhum Redux enhancerque pudesse realmente remover a natureza síncrona de dispatch.

Fkulikov
fonte
1
Você deve atualizar o link de aplicação de middleware para https://github.com/reduxjs/redux/blob/master/src/applyMiddleware.ts#L19 (devido à migração redux de js -> ts, não consigo fazer a edição uma vez que tem <6 caracteres). Ou, talvez você deva referenciar um commit quando eles ainda usam js como em seu code itselflink, o que causaria deadlinks devido ao aspecto 'permalink' dos commits.
user7413060