我现在在使用Firebase的React中使用mobx。
首先,有一个'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状态?
答案 0 :(得分:3)
您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)});
});
};