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

Adi*_*ari 15 mobx mobx-react

我正在使用带有 mobx 的 react js 并从 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

正如您在第一个块('black')中看到的那样,我从 api 获取数据,然后我将 respnse.tasks 设置为 this.tasks。

 this.tasks = response.tasks
  console.log('my new tasks',this.tasks)
Run Code Online (Sandbox Code Playgroud)

Tar*_*nda 37

您可以将代理转换为 JS:

import { toJS } from 'mobx'

// example
toJS(response)
Run Code Online (Sandbox Code Playgroud)


Kev*_*Kev 10

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

“我只是想将我从 api 获取的对象数组设置为 mobx 变量”

并不是你的最终目标。

如果你想让你的观察者:

  • 选项 a:当数组引用更改时做出反应
    = 不关心数组中的值。
    使用@observable.ref tasks.

  • 选项 b:当数组中每个值的引用发生变化时做出反应
    = 不关心单个对象的属性。
    使用@observable.shallow tasks.

  • 选项 c:也对单个对象属性做出反应
    = 使所有内容都可观察,引用和对象属性像您一样
    使用@observable tasks

就像评论中指出的那样,mobx5 正在使用代理,与以前的版本相比,某些行为可能会有所不同。

更多信息:Mobx 数组Mobx 装饰器浅层可观察性

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