Как стать автором
Обновить
-2
0
Валентин @rickets

Пользователь

Отправить сообщение

подставка с вентилятором? не, не слышал

Простой, action/runInAction это грубо говоря транзакция.

транзакция или батчинг?
Че за дичь вообще вы несете то?)
Не настолько «умен» и «рассудителен» как вы
Проблема с this давно уже не проблема — оформляем метод как стрелочную функцию, и всё.
Легаси никто не отменял. И я встречал людей намеренно не использующих стрелочные в классах.
2) runInAction конкретно тут не нужен, как и action. Вы же вообще не понимаете зачем они нужны и когда их нужно и использовать, однако пытаетесь вставить свои 5 копеек, более того вы говорите makeAutoObservable — уродливый синтаксис, в каком месте он уродливый то?) makeAutoObservable(this) в конструкторе класса, одна строчка, где тут уродство то?) Че за дичь вообще вы несете то?)

Я вроде сказал «вроде». makeAutoObservable(this) — это костыль, я ошибся когда сказал, что это уродство. Вам нормально когда у вас в конструкторе непонятные сайд эффекты? Одна строчка где тут костыль-то? че за дичь я вообще несу-то?).
3) Кол-во кода в разы больше? Мда, а в в курсе что классы/функции и т.п. можно выносить в разные файлы и импортировать оттуда?) Вам привели наглядный пример где все специально в одном файле написано.

Лапша? мда, я думал в эффекторе тоже можно вносить функции в разные файлы и импортировать оттуда?). Вам привели наглядный пример где все специально в одном файле написано. И вы в коде опустили часть с комментами и сократили код с fetch'ем в одну. Так и я могу говорить, что лапши нет.
эм, ну это уродство, и помоему вы забыли про runInAction. и кстати кода уже в разы больше стало
Если в моем сторе есть данные вида User.details.personal.firstName и есть какой-то компонент который подписан только на firstName, он будет перерендериваться ТОЛЬКО если поменяется firstName. Effector так может из коробки?

офк может
Конечно, можно разобраться в архитектуре flux. Можно все время держать в голове, что у вас иммутабельность, и нельзя мутировать данные, можно делать flat store, потому что архитектура плохо работает с вложенными данными, можно писать много лишнего кода на пустом месте(селекторы) и тд и тп.

effector избавлен от этих болезней
декораторы можно не использовать, это дело вкуса.

и там появляется еще более уродский синтаксис, синтаксис с makeAutoObservable
чуждый апи людям не знающим redux. про космические оптимизации вы конечно же загнули. У effector'а довольно неплохо с производительностью. В mobx же довольно много спорного синтаксиса, например: декораторы, runInAction и из последнего makeAutoObservable(дикий костыль как по мне). классы — это чуждый апи для js в принципе, любой человек писавший на языках типа java, удивится пляске вокруг this
import {createStore, createEffect} from 'effector'

const fetchPostsFx = createEffect(async (postId) => {
  const req = await fetch(`https://jsonplaceholder.typicode.com/posts/${postId}/comments`);
  return req.json();
})

const $posts = createStore([]).on(
  fetchPostsFx.doneData,
  (_, posts) => posts,
)

await fetchPostsFx(1)

в случае с effector мне и флаги переключать не надо, и ошибки обрабатывать, потому что createEffect об этом уже позаботился

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность