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)?
design-patterns
architecture
facebook
reactjs
mfrachet
fonte
fonte
Respostas:
Ok, deixe-me explicar passo a passo
1 O que é o fluxo?
Eles chamam isso de Flux por um motivo também.
Implementações de fluxo
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 é
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
fonte
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?)
fonte
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.
fonte