如何在反应中将 json 推送到 Mobx 的数组状态
How to push the json to the array state of Mobx in react
我现在在 React 中使用 mobx 和 firebase。
首先,有一个'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 returns 一个对象文字,您可能将其转换为数组并分别推送每个项目。
您可以使用 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)});
});
};
我现在在 React 中使用 mobx 和 firebase。
首先,有一个'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 returns 一个对象文字,您可能将其转换为数组并分别推送每个项目。
您可以使用 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)});
});
};