V řešení předchozího cvičení nastává nepříjemná situaci, která není hned na první pohled patrná. V následujícíh krocích ji vyřešíme. Pokračujte v řešení z předchozího cvíčení.
- Do funkce
handleOfflinepřidejteconsole.log, který v konzoli uvidíme při každém spuštění funkce. - Zkuste nyní několikrát přejít mezi stránkami Domů a Test připojení. Poté na stránce Test připojení vyzkoušejte odpojení od internetu. V konzoli uvidíte, že funkce
handleOfflinese zavolala zbytečně několikrát po sobě. Zamyslete se, proč taková situace nastává. - Toto je prostor na zamyšlení…
- Situace nastává proto, že při každém mountu kouponenty se vytvoří úplně nové funkce
handleOfflineahandleOnline, které se připojí jako posluchače událostí. Na událost tak reagují všechny funkce ze všech mountů, které kdy nastaly. - Abychom se vyhnuli vícenásobnému nastavování stavu, musíme posluchače události při unmountu komponenty zase odstranit voláním
window.removeEventListener. Proveďte tedy při unmountu nezbytný úklid a vyzkoušejte, že funkcehandleOfflinese pak i po několika mountech volá pouze jednou.