У меня есть приложение, использующее 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