Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react中将json推送到Mobx的数组状态_Javascript_Reactjs_Mobx - Fatal编程技术网

Javascript 如何在react中将json推送到Mobx的数组状态

Javascript 如何在react中将json推送到Mobx的数组状态,javascript,reactjs,mobx,Javascript,Reactjs,Mobx,我正在使用mobx对firebase进行React now。 首先,有一个“projectState”作为空数组。 第二,从firestore获取数据后,将其推送到Mobx状态。 这是我的密码。 @observable projectState = { projects: [] }; projectGet = () => { firebase .firestore() .collection("projects") .doc(

我正在使用mobx对firebase进行React now。
首先,有一个“projectState”作为空数组。
第二,从firestore获取数据后,将其推送到Mobx状态。
这是我的密码。

 @observable projectState = {
    projects: []
  };

  projectGet = () => {
    firebase
      .firestore()
      .collection("projects")
      .doc("DkBFcdAOAWWl8Az")
      .get()
      .then(done => {
        const projectsTotal = JSON.stringify(done.data());
        this.projectState.projects.push(projectsTotal);

      });
  };
'done.data()'给出如下所示的json类型文件。

{"id": "3", "title": "good"}
但是,当我使用“console.log”检查推送数据后的状态时。
它给我的感觉如下

   Proxy {0: "{"content":"asdf","id":"123","title":"yoman"}", 
1: "{"content":"asdf","id":"123","title":"yoman"}",
 Symbol(mobx administration): ObservableArrayAdministration}

如何将json数据推送到mobx状态

当您
const projectsTotal=JSON.stringify(done.data())时,您正在将返回的对象转换为字符串

您可以将其更改为仅分配数据

 @observable projectState = {
    projects: []
  };

  projectGet = () => {
    firebase
      .firestore()
      .collection("projects")
      .doc("DkBFcdAOAWWl8Az")
      .get()
      .then(done => {
        this.projectState.projects.push(done.data());
      });
  };
此外,从字符串化的值中,我看到Firebase返回一个对象文本,您可能需要将其转换为数组并分别推送每个项

您可以使用
Object.values
获取值数组

@observable projectState = {
    projects: []
  };

  projectGet = () => {
    firebase
      .firestore()
      .collection("projects")
      .doc("DkBFcdAOAWWl8Az")
      .get()
      .then(done => {
        Object.values(done.data())
              .forEach((value) => {this.projectState.projects.push(value)});
      });
  };

非常感谢你。但是当我在推送之后,使用console.log(this.projectState.projects)给出“Proxy{0:Proxy,Symbol(mobx管理):observearrayadministration}”。因此,在项目状态中没有像{“a”:“b}这样的纯json文件。你能帮我解决这个问题吗?我在我的代码中附加了你的代码。但结果是一样的。T.TAnd迭代后数组中的值是什么?再编辑一点就可以了。感谢您的洞察力。