на самом деле там даже официальный гайд очень многое раскрывает на примерах. Просто в реакте парадигма изначально понятная - компоненты ререндерятся всегда, когда меняются пропсы или стэйт. Исходя из этого ты всегда знаешь, что произойдёт, но вынужден отлавливать лишние ререндеры.
А вот у свелта не всё прозрачно и очевидно, без серьёзных раскопок исходников и аутпута. Не понимаешь, когда у тебя компонент пересоздастся, а когда только какой-то блок или цепочка внутри него, и как это зааффектит (или, по крайней мере, должно аффектить, чтобы точно знать, что где-то двойной рендер - это не баг, а фича). Когда думаешь, как избежать говнокода, приходится изобретать свои подходы. С зависимостями $, например. По сторам с одной стороны вроде понятно, но хз как работает get и стоит ли вообще его использовать, и как можно без get, например, в plain js, чтобы в точке получить актуальные значения, не ломая оптимизацию.
Просто в реакте парадигма изначально понятная - компоненты ререндерятся всегда, когда меняются пропсы или стэйт. Исходя из этого ты всегда знаешь, что произойдёт, но вынужден отлавливать лишние ререндеры.
Могу согласиться в том, что принцип UI = func(state) и по звучанию и по пониманию проще для большинства. Однако для реального мира эта концепция практически не жизнеспособна, потому что не все так просто. Кроме того, не согласен с тем, что в реакте компонент ререндерится всегда. Точнее не так, функция render вызывается каждый раз при изменениях, это так, но есть же куча life-cycle вещей, которые отрабатывают по правилам и не каждый раз. В этом смысле я не понимаю чем отличается тело <script> в свелт от того же конструктора в реакт. Точно также вызывается один раз при создании компонента, точно также это описано в доках. Почему людям кажется что тело <script> это обязательно эквивалент методу render не понятно. Тело <script> - это конструктор компонента и это вполне ясно из гайда и тутора.
А вот у свелта не всё прозрачно и очевидно, без серьёзных раскопок исходников и аутпута.
Опять же могу согласиться только с тем, что реактивное программирование сложнее чем проактивное. Но имхо, по сравнению с тру реактивные вещами типа Rx, реактивщина в свелт сделана ну просто для детей.
Не понимаешь, когда у тебя компонент пересоздастся, а когда только какой-то блок или цепочка внутри него, и как это зааффектит (или, по крайней мере, должно аффектить, чтобы точно знать, что где-то двойной рендер - это не баг, а фича).
А запомнить кстати очень просто - компонент свелт САМ не пересоздается/перезапускается... never (©️ Rich Harris). Собственно пример выше не про то, что в свелт это как-то по особому работает. Тут оно работает точно также - если нет ключей, то ни один фреймворка не знает что, например, порядок элементов в массиве поменялся. Ключи позволяют оптимизировать эти вещи.
Двойного рендера тоже фактически не бывает. Бывают двойные срабатывания реактивных выражений.
По сторам с одной стороны вроде понятно, но хз как работает get и стоит ли вообще его использовать, и как можно без get, например, в plain js, чтобы в точке получить актуальные значения, не ломая оптимизацию.
Благословляю тебя использовать
get
))) Никакой такой оптимизации там сломать невозможно. Нужно просто понимать, что если тебе значение нужно разово и "по месту" то создание и снятие подписки ничего не стоят. А если тебе значения нужны постоянно, часто и тп, тогда нет смысла не использовать одну подписку долго.