Вопрос про React Mobx. (хотя я думаю, что это общее для любой библиотеки хранилища реакции) Есть ли способ создать функцию обновления атомарного хранилища, не вызывая рендеринга компонентов во время обновления хранилища?
Проблема, с которой я столкнулся, заключается в следующем:
// store.js
class Store {
constructor() {
extendObservable(this, {
array: [1, 2],
i: 1
},
get current_element() {
return this.array[this.i];
}
}
update(array, i) {
this.array = array;
this.i = i;
}
}
component.js
// ...
render() {
return <div>store.current_element</div>
}
Теперь, когда я вызываю store.update([0], 0)
, я получаю ошибку при выходе индекса за пределы. Причина в том, что внутри функции store.update()
после выполнения первой строки (this.array = array;
) запускается отрисовка компонента. Таким образом, компонент пытается ссылаться на индекс 1 массива [0]
, что вызывает ошибку индекса за пределами диапазона. Я хочу избежать этого и запускать рендеринг компонентов только после выполнения всей функции store.update()
.
Как я мог этого добиться?