【发布时间】:2023-03-10 00:10:01
【问题描述】:
这是我的 mobx 商店代码。
首先,必须执行“projectGet()”才能从 firestore 推送数据。
@observable projectState = {
projects: []
};
projectGet = () => {
firebase
.firestore()
.collection("projects")
.get()
.then(snapshot => {
snapshot.forEach(doc => {
this.projectState.projects.push(doc.data());
});
})
.catch(err => {
console.log("Error getting documents", err);
});
};
将数据推送到projectState后,应该在另一个.js文件中读取。
我在渲染内部运行了该函数。
但是当我进入主页时,它一开始并没有更新状态。
所以,当我刷新主页时,它会更新状态。
但是,我需要在第一次访问主页时更新状态。
我尝试使用“componentWilupdate”、“ComponentDidmount”等。
它根本不起作用。
你能给我一些关于这个问题的建议吗?
render() {
const { Project } = this.props;
Project.projectGet();
return (
<div className="col s12 m6">
<ProjectList projects={Project.projectState.projects} />
</div>
);
}
我在下面附加了更多代码。
import React from "react";
import ProjectSummary from "./ProjectSummary";
import { Link } from "react-router-dom";
const ProjectList = ({ projects }) => {
return (
<div className="project-list section">
{projects &&
projects.map(project => {
return (
<Link to={"/project/" + project.id} key={project.id}>
<ProjectSummary project={project} />
</Link>
);
})}
</div>
);
};
export default ProjectList;
【问题讨论】: