Ефекти та файбери це наріжний камінь react 16+ якій дозволив імплементувати саспенси й таймслайсінг чим драматично прискорив рендерінг а головне респонс для користувача. Також хуки по факту є також алгебраїчними еффектами Якщо все спростити до побутового рівня та ігнорувати теорію та вільні монади - то ефект є екскпшеном що не перериває виконання та вміє повертати значення в точку визова. Є нелінійні ефекти які можуть обирати куди повертатися. Такий підхід дозволяє генералізувати - синхронний асинхроний та багатопоточний код та представляти його як лінійний Хороша стаття Абрамова на тему еффектів https://overreacted.io/algebraic-effects-for-the-rest-of-us/ Пояснення як працює useState https://overreacted.io/how-does-setstate-know-what-to-do/
Відео про файбери та ефекти у react https://www.youtube.com/watch?v=vzzOdWj4YyM
Імплементація еффектів для js https://github.com/nythrox/effects.js туторіал https://nythrox.github.io/effects.js/#/algeff Як бачимо обгортки та генератори виглядають не дуже елегантно тому ефекти краще використовувати коли вони вбудовані в мову Тут нам допоможе bable одна з імплементацій нового синтаксису https://github.com/effectsjs/effectsjs
Кілька мов програмування з системою типізованих еффектів https://www.eff-lang.org/ https://koka-lang.github.io/koka/doc/index.html
Також є цікавий пропоузал підтримати ефекти в wasm https://github.com/effect-handlers/wasm-effect-handlers/tree/master/papers
Для фанатів теорії та чому все так працює цікаво почитати https://www.eff-lang.org/handlers-tutorial.pdf https://homepages.inf.ed.ac.uk/slindley/papers/handlers.pdf Ну й куди без Ocaml https://github.com/ocaml-multicore/effects-examples https://kcsrk.info/ocaml/multicore/2015/05/20/effects-multicore/ https://kcsrk.info/ocaml/multicore/effects/2015/05/27/more-effects/