Entendendo o padrão de fluxo

12

Na verdade, estou estudando o padrão de fluxo e há algo que não consigo entender sobre as lojas .

O que eles são exatamente?

Eu li muitos artigos e parece que isso se refere ao domínio.

Isso significa que essa é a parte "abstrata" relacionada às chamadas da API ou chamadas de back-end?

Não está muito claro para mim.

Edit: Poderia ser a mesma coisa que a fábrica angular? Buscando dados remotos, executando uma tarefa comercial ou armazenando alguns estados de aplicativos (usuário atual conectado, por exemplo)?

mfrachet
fonte
1
Um link para o que exatamente você está falando seria útil. Você quer dizer esse "padrão de fluxo"? Fluxxor.com/what-is-flux.html
DougM 1/15/15
O fluxo nada mais é do que o padrão de publicação / assinatura com uma restrição de que todos os dados passam primeiro pelo expedidor. Garante que os dados não retrocedem (e causam confusão). Coisas como "Loja", "Ação" etc. são apenas outra maneira de dizer Componentes do sistema e Dados que são repassados.
kiwicomb123

Respostas:

23

Ok, deixe-me explicar passo a passo

1 O que é o fluxo?

  • Um padrão
  • Expedidor centralizado
  • Fluxos de dados unidirecionais
  • Item da lista

Eles chamam isso de Flux por um motivo também.

Implementações de fluxo

  • Fluxo do Facebook
  • Alt
  • Refluxo
  • Flummox
  • NuclearJS
  • Fluxável

insira a descrição da imagem aqui

Um bate-papo com o Flux

Reagir : Olá ação, alguém clicou neste botão "Salvar curso".

Ação : Obrigado Reagir! Registrei um criador de ação no expedidor, para que o expedidor se encarregue de notificar todas as lojas que se importam.

Despachante : Deixe-me ver quem se importa com o salvamento de um curso. Ah! Parece que a loja registrou um retorno de chamada comigo, então eu a informarei.

Loja : Hi dispatcher! Obrigado pela atualização! Atualizarei meus dados com a carga que você enviou. Emitirei um evento para os componentes do React que se importam.

Reagir : Ooo! Novos dados brilhantes da loja! Vou atualizar a interface do usuário para refletir isso!


API de fluxo


register (callback de função) - “Ei despachante, me execute quando ações acontecerem. -Loja"

unregister (string id) - “Hey despachante, pare de se preocupar com esta ação. -Loja"

waitFor (array ids) - “Atualize esta loja primeiro. -Loja"

expedição (carga útil do objeto) - “Ei expedidor, conte às lojas sobre esta ação. -Açao"

isDispatching () - "Estou ocupado enviando retornos de chamada agora."

então a questão que surge em nossa mente é

Então, o fluxo é um modelo de publicação-assinatura?

Nem tanto.

Difere de duas maneiras:

1.Cada carga útil é enviada para todos os retornos de chamada registrados.

2.Os callbacks podem esperar por outros retornos de chamada

Sumário

Fluxo é um padrão para fluxos de dados unidirecionais Ações encapsulam eventos O Dispatcher é um hub central que retém chamadas de retorno Lojas mantém o estado do aplicativo Muitas implementações

Dhaval Patel
fonte
Meu primeiro problema é que o estado permite a aplicação de ter diferentes dados das entidades Remote API: - /
mfrachet
o que você quer dizer com estado permite? onde quer que emitem mudança chamada será chamado Reagir Ver e novamente chamado método de mudança de estado
Dhaval Patel
Admitindo que eu construo um aplicativo com fluxo. Estou lidando com uma API e, em seguida, salvo os dados em minhas lojas. E se um usuário modificar os dados remotos? Vou ter uma diferença entre cliente e servidor
mfrachet
Agora, onde posso encontrar o porquê. Se todo o expedidor e loja farão a exibição para a frente, por que a ação não pode atualizar a exibição diretamente. por que há intermediários
Muhammad Umer
@MuhammadUmer: Dispatcher é um para a aplicação e armazenamento é baseada em componente no aplicativo para remover os intermediários de redundância foram introduzidos
Dhaval Patel
1

Procurando um exemplo simples ( https://github.com/facebook/flux/tree/master/examples/flux-todomvc/ ), "lojas gerenciam o estado do aplicativo para um domínio específico dentro do aplicativo." Ou seja, eles contêm dados sobre o estado de um aspecto do aplicativo e todo o código para alterá-lo. Sempre que houver uma nova atualização do Dispatcher, todas as Lojas o veem, decidem como atualizar seus dados em resposta e depois notificam as Exibições de que os dados foram alterados. Nos exemplos, as Lojas contêm itens como "lista de encadeamentos invisíveis" (onde o Despachante notifica que uma nova mensagem chegou ou que uma antiga foi lida, e as Exibições exibem os encadeamentos de mensagens para o usuário) e "tempo de reprodução atual e Estado."

Mais tecnicamente: eles são a camada intermediária da estrutura que registra retornos de chamada com o Dispatcher para receber atualizações e notifica as Views quando o estado dos dados é alterado. (As visualizações podem enviar ações de volta ao Dispatcher.) Há uma interface abstrata que eles implementam, onde cada Store registra um retorno de chamada com o Dispatcher e transmite eventos para as Views, mas cada Store parece representar um domínio específico de maneira concreta. (Existem contra-exemplos?)

Davislor
fonte
0

Lojas são áreas do código que armazenam o estado do aplicativo e a lógica complexa. Uma razão para eles é que várias exibições provavelmente usarão os mesmos dados, mas os exibirão de uma maneira diferente ou exibirão alguns, mas não todos, dados para um domínio específico. Por exemplo, um usuário efetua login e você recebe seu nome, sobrenome, email, foto, cidade, número de endereço, número de telefone etc. Essas informações são exibidas em visualizações separadas. Em vez de duplicar dados nas visualizações, podemos usar uma loja chamada UserStore que armazena os dados para o usuário. Isso simplifica o sistema, fornecendo "um local para fazer alterações" sempre que a lógica ou os dados armazenados devem ser alterados. Existem muitas outras razões para usar uma loja, no entanto, essa é a mais óbvia que eu acho.

kiwicomb123
fonte