Size: a a a

$mol: Разработка

2021 November 30

SY

Sergey Yuferev in $mol: Разработка
а, оно просто сбоку экшен создает, не связанный с мемоизацией компутеда
источник

ДК

Дим К in $mol: Разработка
Ага, можно компутед и как обсервабл использовать. При изменении зависимостей (если они ранее были запулены) компутед ресетится.
источник

ПЗ

Павел Зубков... in $mol: Разработка
@mem
foo(next?: string) {
 return next ?? this.default()
}

?
источник

ПЗ

Павел Зубков... in $mol: Разработка
интересный вопрос, если рассматривать это в контексте, что у foo есть две зависимости next и default - то состояние согласовано)
источник

ДК

Дим К in $mol: Разработка
Вот, кстати, смущает неконсистентность поведения в этом случае. Если сначала получить дефолтное значение, а потом изменить, то изменение зависимостей будет ресетить атом. А если сразу записать значение, то не будет.
источник

ДК

Дим К in $mol: Разработка
Ну так-то да, можно считать, что рядом с компутедом всегда лежит обсервабл, который имеет приоритет. Правда это скорее 3 стратегия получается.
источник

SY

Sergey Yuferev in $mol: Разработка
почему так нельзя: если есть зависимости, то в собственный кэш писать нельзя, только в зависимости, как в mobx?
источник

ПЗ

Павел Зубков... in $mol: Разработка
если я хочу переключаться между next и default, то могу это в коде явно выразить
@mem
foo(next?: next) {
 const default = this.default()
 return next > 0 ? next : default
}
источник

ДК

Дим К in $mol: Разработка
Почему нельзя? Можно. Вот я и думаю как лучше сделать.
источник

SY

Sergey Yuferev in $mol: Разработка
ну просто это будет за сеттером скрыто
источник

SY

Sergey Yuferev in $mol: Разработка
только будут те же computed/observable из mobx, в профиль
источник

ДК

Дим К in $mol: Разработка
Проталкивания идут в отдельном файбере. Чтобы такой код заработал, как задумано, нужно из этого файбера не только значение в атом засовывать, но и список зависимостей.
источник

ДК

Дим К in $mol: Разработка
Ну вот сейчас используется более простая метафора: @mem - не более чем реактивный кеш вокруг метода. Что вернул - то и закешировалось. Соответственно, при проталкивании можешь вернуть что хочешь и оно запишется в кеш.
источник

SY

Sergey Yuferev in $mol: Разработка
тогда зависимости перестают трекаться, если в них ничего не проталкивается
источник

ДК

Дим К in $mol: Разработка
Зависимости атома сейчас трекаются лишь при затягивании.
источник

SY

Sergey Yuferev in $mol: Разработка
вот тут default трекается после первого пуша:
```
@mem
foo(next?: next) {
 return this.default(next)
}
вот тут нет:

@mem
foo(next?: next) {
 return next ?? this.default()
}
```
источник

ДК

Дим К in $mol: Разработка
А так снова да:

this.foo()
this.foo( 777 )
источник

SY

Sergey Yuferev in $mol: Разработка
я про поведение после пуша, если что
источник

SY

Sergey Yuferev in $mol: Разработка
тебе не кажется запись в атом костылем? в mobx есть observable и такая проблема как класс отсутствует
источник

ДК

Дим К in $mol: Разработка
Там эта проблема решается через реакции.
источник