Ik “ben eigenlijk het fluxpatroon aan het bestuderen en er is iets dat ik” niet kan “begrijpen met betrekking tot de slaat op.
Wat zijn dat precies?
Ik heb veel artikelen gelezen en het lijkt erop dat het gaat om de domein.
Betekent dit dat dit het “abstracte” deel is dat verband houdt met api-aanroepen of back-end-aanroepen?
Het is niet erg duidelijk voor mij.
Bewerken: zou het hetzelfde kunnen zijn als de hoekfabriek? Externe gegevens ophalen, een zakelijke taak uitvoeren of app-statussen opslaan (bijvoorbeeld huidige gebruiker verbonden)?
Opmerkingen
- Een link naar wat u precies ' waar we het over hebben, zou nuttig zijn. Bedoel je dit " fluxpatroon "? fluxxor.com/what-is-flux.html
- facebook.github. io / flux / docs / overview.html # content
- Flux is niets meer dan het publish / subscribe-patroon met een beperking dat alle gegevens eerst door de dispatcher gaan. Het garandeert dat de gegevens niet achteruit gaan (en verwarring veroorzaken). Dingen zoals " Store ", " Actie " etc zijn gewoon een andere manier om Componenten van het systeem uit te spreken, en de gegevens die worden doorgegeven.
Answer
Oké, laat me je stap voor stap uitleggen
1 Wat is Flux?
- Een patroon
- Gecentraliseerde dispatcher
- Unidirectionele gegevensstromen
- Lijstitem
Ze noemen het ook Flux met een reden.
Flux-implementaties
- Facebooks Flux
- Alt
- Reflux
- Flummox
- NuclearJS
- Fluxible
Een chat met Flux
Reageer : Hey Action, iemand klikte op “Save Cour se ”knop.
Actie : Bedankt Reageer! Ik heb een actie-maker geregistreerd bij de dispatcher, dus de dispatcher moet ervoor zorgen dat alle winkels die erom geven op de hoogte worden gesteld.
Dispatcher : Laat me eens kijken wat er om geeft dat een cursus wordt opgeslagen. Ah! Het lijkt erop dat de Store een terugbelactie bij mij heeft geregistreerd, dus ik laat het haar weten.
Store : Hallo dispatcher! Bedankt voor de update! Ik werk mijn gegevens bij met de payload die je hebt verzonden. Dan zal ik een gebeurtenis uitzenden voor de React-componenten die er om geven.
Reageer : Ooo! Glanzende nieuwe gegevens uit de winkel! Ik zal de gebruikersinterface updaten om dit weer te geven!
Flux API
register (function callback) – “Hey dispatcher, laat me weten wanneer er iets gebeurt. -Store ”
unregister (string id) -” Hé dispatcher, maak je geen zorgen over deze actie. -Store ”
waitFor (array ids) -” Update deze winkel eerst. –Store ”
dispatch (objectpayload) -” Hey dispatcher, vertel de winkels over deze actie . -Action ”
isDispatching () -” Ik ben momenteel bezig met het verzenden van callbacks. “
dus de vraag die bij ons opkomt is
Dus Flux is een model voor publiceren en abonneren?
Niet helemaal.
Verschilt op twee manieren:
1. Elke payload wordt naar alle geregistreerde callbacks verzonden.
2.Callbacks kunnen wachten op andere callbacks
Samenvatting
Flux is een patroon voor unidirectionele gegevensstromen Acties kapselen gebeurtenissen in Dispatcher is een centrale hub die callbacks vasthoudt Winkels houden app-status vast Veel implementaties
Opmerkingen
- Mijn eerste probleem staat die status toe dat de toepassing verschillende gegevens van de externe api-entiteiten heeft: – /
- wat bedoel je met staat toestaat? waar de verandering ook wordt genoemd, het zal de React View worden genoemd en opnieuw de statuswijzigingsmethode worden genoemd.
- Toegegeven dat ik een applicatie bouw met flux. Ik heb te maken met een API en vervolgens bewaar ik de gegevens in mijn winkels. Wat gebeurt er als een gebruiker de externe gegevens wijzigt? Ik zal een verschil hebben tussen zowel de client als de server.
- Waar kan ik nu vinden waarom. Als alle dispatcher en winkel naar voren gaan om te bekijken, waarom kan ' de weergave dan niet rechtstreeks bijwerken.waarom er tussenpersonen zijn
- @MuhammadUmer: Dispatcher is er een voor de applicatie en de winkel is gebaseerd op een component in de applicatie, dus om de redundantie te verwijderen, werden tussenpersonen geïntroduceerd
Antwoord
Een eenvoudig voorbeeld opzoeken ( https://github.com/facebook/flux/tree/master/examples/flux-todomvc/ ), “Winkels beheren de applicatiestatus voor een bepaald domein binnen de applicatie.” Dat wil zeggen, ze bevatten gegevens over de staat van een aspect van de applicatie en alle code om deze te wijzigen. Elke keer dat er een nieuwe update van de Dispatcher komt, zien alle Stores deze, beslissen ze hoe ze hun gegevens als reactie willen bijwerken en stellen ze de Views op de hoogte dat de gegevens zijn gewijzigd. In de voorbeelden bevatten Stores dingen als ongeziene threads-lijst (waar de Dispatcher hen op de hoogte stelt dat er een nieuw bericht is binnengekomen of dat een oud bericht is gelezen, en de weergaven de berichtthreads voor de gebruiker weergeven) en huidige afspeeltijd en state. ”
Meer technisch: zij zijn de tussenlaag van het raamwerk dat callbacks registreert bij de Dispatcher om updates te ontvangen, en vervolgens de Views op de hoogte stelt wanneer de status van de gegevens verandert. (De views kunnen dan acties terugsturen naar de Dispatcher.) Er is een abstracte interface die ze implementeren, waarbij elke Store een callback registreert bij de Dispatcher en gebeurtenissen uitzendt naar de Views, maar elke Store lijkt een specifiek domein op een concrete manier weer te geven. (Zijn er tegenvoorbeelden?)
Answer
Stores zijn gebieden van de code die de applicatiestatus en complexe logica opslaan. Een reden hiervoor is dat meerdere weergaven waarschijnlijk dezelfde gegevens gebruiken, maar ze op een andere manier weergeven, of sommige maar niet alle gegevens voor een bepaald domein weergeven. Een gebruiker logt bijvoorbeeld in en u ontvangt zijn voornaam, achternaam, e-mail, foto, woonplaats, adresnummer, telefoonnummer enz. Deze informatie wordt weergegeven op afzonderlijke weergaven. In plaats van gegevens tussen weergaven te dupliceren, kunnen we één winkel gebruiken, genaamd UserStore, die de gegevens voor de gebruiker opslaat. Dit vereenvoudigt het systeem door “één plaats te geven om een wijziging aan te brengen” wanneer de logica of opgeslagen gegevens moeten worden gewijzigd. Er zijn tal van andere redenen om een Store te gebruiken, maar dat is volgens mij de meest voor de hand liggende reden.