将数组数组设置为mobx数组显示代理对象

问题描述 投票:3回答:2

我正在使用反应js与mobx,我从api获取数据。我得到的数据是对象数组。当我将数据设置为mobx变量时,我看到代理对象的数组(不确定代理说的是什么)。我正在尝试将我从api获得的对象数组设置为mobx变量。

我的商店

class UserStore {
@persist @observable token = null
@observable tasks = []
@observable done = false

@persist @observable email = ''

constructor() {

}
@action
getTasks = async () => {
    try {
        let response = await Api.getTasks()
        console.log('getTasks',response.tasks)
        this.tasks = response.tasks
        console.log('my new tasks',this.tasks)

    } catch (e) {
        console.log(e)
    }
}

enter image description here

你可以在第一个块('black')中看到我从api获得的数据,然后我将respnse.tasks设置为this.tasks。

 this.tasks = response.tasks
  console.log('my new tasks',this.tasks)
mobx mobx-react
2个回答
2
投票

这取决于您希望如何观察数据。

“我正在尝试将我从api获得的对象数组设置为mobx变量”

并不是你的最终目标。

如果您希望观察者:

  • 选项a:当数组引用发生变化时作出反应 =不关心数组中的值。 使用@observable.ref tasks
  • 选项b:当数组中每个值的引用发生变化时作出反应 =不关心单个对象属性。 使用@observable.shallow tasks
  • 选项c:对各个对象属性也做出反应 =使所有内容都可观察,引用和对象属性 像你一样使用@observable tasks

如评论中所示,mobx5正在使用Proxy,并且某些行为可能与先前版本相比有所不同。

更多信息:Mobx arraysMobx decoratorsshallow observability

注意:如果这对您没有帮助,您需要提供更多详细信息,例如您的反应组件代码。


1
投票
  • 您可以将代理转换为Js
  • 从'mobx'导入{toJS};
  • 例:toJS(回应)
© www.soinside.com 2019 - 2024. All rights reserved.