У меня есть три связанных вопроса о лучших практиках с «computed».
TL; DR: Что мне нужно подумать о себе и что примирение делает из коробки.
Допустим, я загружаю здоровенный набор данных в переменную данных:
data = asyncComputed( await fetch … return data )
У меня есть удобная вычисляемая подпорка, которая форматирует эти данные:
@computed get timeseries() {
const data = this.data.get()
const timeseries = nest()
.key(d => d.geo)
.entries(data)
return timeseries
}
И третья удобная подпорка, рассчитанная навершина временных рядов:
@computed get extentX() {
const timeseries = this.timeseries.get()
const extentX = extent(timeseries, d => d.time)
return extentX
}
Существует ли риск того, что рендеринг произойдет до того, как будут выполнены все эти вычисления, или MobX гарантирует, что это было согласовано раньше?
Есть ли лучший способ структурировать этот код, чтобы избежать цепочки вычисляемых реквизитов?
Допустим, первый асинхронный вызов запускается при изменении свойства (id) наобъект и что этот объект позже обновляется из той же цепочки событий:
variable = { id : “my-variable”, extent: undefined}
data = asyncComputed( await fetch api?id=variable.id )
=> вычисляет экстент => приводит к переменной. extent = [200, 400] Есть лириск того, что это может вызватьбесконечный цикл или безопасно обновить свойство объекта, как это?