Наблюдаемый массив Mobx не обновляется

Я объявляю наблюдаемый массив следующим образом в reactjs, используя mobx

@observable cacheditems

constructor() {
    this.cacheditems  =   []

Теперь я получаю данные из pouch-db в автономном режиме следующим образом:

var items = []
db.allDocs({include_docs: true}, function(err, docs) {
                docs.rows.map((obj, id) => {
                    items.push(obj.doc)
                })
            })


 this.cacheditems = items

Но данные не установлены. Когда я пытаюсь получить данные для рендеринга, это пустой массив.


person sam23    schedule 08.07.2017    source источник


Ответы (1)


Когда вы делаете this.cacheditems = items, вы перезаписываете ссылку на наблюдаемый массив. Вместо этого вы можете использовать replace:

class Store {
  @observable cacheditems = []

  constructor() {
    db.allDocs({include_docs: true}, (err, docs) => {
      var items = []
      docs.rows.map((obj, id) => {
        items.push(obj.doc)
      })
      this.cacheditems.replace(items)
    })
  }
}
person Tholle    schedule 09.07.2017