Это мой код магазина mobx.
Во-первых, необходимо выполнить projectGet (), чтобы вытолкнуть данные из хранилища.
@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;