Best practice – překreslení všech komponent dotčených nějakým requestem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Spectator
Člen | 48
+
+1
-

Ahoj,

klidně mne odkažte na nějaké jiné vlákno diskuse, ale zajímá mne, jak nejlépe překreslovat všechny komponenty závislé na konkrétním stavu aplikace?

Na stránce mám pro ilustraci komponenty:

  • zobrazené body za aktivitu
  • ikonku typu uživatele (ukecaný v diskusi, aktivní obecně, …)
  • diskusi
    • různě zanořené komentáře
    • like tlačítka u komentářů
    • seznam „likerů“ u každého likeu
    • sdílecí tlačítka

  • anketu

A teď mne zajímá tato situace. Kliknu na like tlačítko. A potřebuji překreslit:

  • příslušné like tlačítko
  • seznam „likerů“
  • zvýšit počet bodů za aktivitu
  • popř. je-li to žádoucí, tak i ikonku u uživatele

Jak co nejčistší cestou vytvořit provázání mezi urč. komponentami? Tj. kdy kterou překreslovat
Jak tato propojení udržovat, přidám-li nějaké další?

Martk
Člen | 661
+
0
-

Určitě máš jednu velkou komponentu lajky, že? A v ní subkomponenty jako tlačítko, seznam likerů apod. to cos vyjmenoval.

Obalíš všechny tyto komponenty jedním snippetem a v handle zavoláš redraw onoho snippetu. Tím by se ti měli překreslit i subkomponenty.

Spectator
Člen | 48
+
0
-

To je mi jasný, ale jak přidat reakci komponenty s počtem bodů kdesi v úplně jiné části stránky a zároveň komponenty s ikonou, zase úplně jinde.

Obalit celou stránku snippetem mi připadá podivné.

Martk
Člen | 661
+
0
-

Neznám best practise, ale použil bych eventy a nebo návrhový vzor observer. Třeba poradí někdo jiný, jak to vyřešil.

Editoval Martk (20. 6. 2017 12:44)

matopeto
Člen | 395
+
0
-

Nehodilo by sa na to Kdyby/Events? https://github.com/…/en/index.md

Myiyk
Člen | 321
+
0
-

Asi bych invalidoval všechny snippety, které se můžou změnit.
Ikdyž se zrovna změnit nemusí, ale jednodušší než to zjišťovat jestli se změnily, tak těch pár dat přenést znovu.

To sice neodpovídá na otázku jak to udělat nejlépe, ale přijde mi to nejjednodušší.

Jinak nejlépe by to bylo client side s React a Flux, to je určeno na takovéhle věci.

Editoval Myiyk (20. 6. 2017 13:55)

Spectator
Člen | 48
+
0
-

@matopeto Ty eventy mne taky napadly.

@Myiyk
Hmm.
React … mi v tomto případě připadá zbytečná složitost navíc a přínos nepříliš velký.

Zuben45
Člen | 268
+
+1
-

Pokud jsem to pochopil dobře, tak potřebuješ posluchače události, v tom případě by mohlo pomoct https://pehapkari.cz/…ce-udalosti/

Tomáš Votruba
Moderator | 1114
+
+1
-

@Zuben45 To jsem chtěl přesně odkázat, když jsem četl dotaz. Díky :)

Editoval Tomáš Votruba (10. 7. 2017 22:35)

Spectator
Člen | 48
+
+2
-

@Zuben45 @TomášVotruba a!!! Dík, to je přesně ono!