Mobx обновляется только если ES6 Set объявлен как ObservableSet - PullRequest
0 голосов
/ 31 января 2020

У меня есть приложение, использующее Next Js и Mobx с классом ниже. Все мои наблюдаемые работают отлично, за исключением пары наборов ES6.

Синтаксис 1 this.downvotes = new Set(json.downvotes || null), компоненты не обновляются.

Синтаксис 2 this.upvotes = new ObservableSet(json.upvotes || null) кажется, что все работает нормально.

Насколько я понимаю, Mobx преобразует Set в ObservableSet автоматически при его украшении, но здесь этого не происходит.

У меня нет ' Я видел Синтаксис 2, использованный где-то раньше, и на самом деле просто попробовал его из отчаяния.

В чем разница между 2? и приемлем ли синтаксис 2?

import { decorate, observable, ObservableSet } from 'mobx'
import User from './User'


class LoggedUser extends User {
    constructor(json = {}, store) {
        super(json, store)
    }

    refresh(json, profileOnly = false) {        
        super.refresh(json)       
        this.upvotes = new ObservableSet(json.upvotes || null)        
        this.downvotes = new Set(json.downvotes || null)                
    }

    toJSON() {
       const profile = super.toJSON()            
       profile.upvotes = Array.from(this.upvotes)
       profile.downvotes = Array.from(this.downvotes)        
       return profile
    }

}

decorate(LoggedUser, {            
    upvotes: observable,
    downvotes: observable,
})

export default LoggedUser
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...