Мне нужно заменить данные в моем наблюдаемом объекте, когда я получаю новый дамп из сокета:
class Store {
@observable data = { foo: 'bar' }
replaceFromDump(newData) {
this.data = newData
}
}
const store = new Store()
store.replaceFromDump({ foo: 'bar' })
// { foo: 'bar' } can be a huge amount of JSON
Тем не менее, я заметил образы производительности, когда объект данных масштабируется, вероятно, потому, что MobX будет вызывать реакции везде, даже если некоторые свойства/значения идентичны.
Есть ли более "умный" способ? - Я думаю, что f.ex заменяет только затронутые части объекта лучше, чем замена всего наблюдаемого?
Я сделал небольшую демонстрацию здесь, объясняя, что я имею в виду: https://jsfiddle.net/yqqxokme/. Замена объекта вызывает новые реакции, даже если данные точно такие же (ожидается). Но я уверен, что есть способ только изменить затронутые части объекта данных, как в функции merge()
.