我在这里遇到了体系结构问题-过去几个月来我一直在使用Apollo缓存进行本地状态管理来开发我的项目,并且正在转向MobX。我的应用程序使用基于图形的数据结构,并且需要我以有时非常复杂的方式与状态进行交互和操纵状态。对于GraphQL查询和Apollo缓存(对我而言),这种控件已被证明太难了。
话虽如此,我不想离开GraphQL,我只是想将结果保存在MobX存储中,因为它给了我很大的自由度。由于useQuery的钩子性质,我只是无法弄清楚如何从MobX存储功能中请求GraphQL数据。
从存储方法中发出请求令人感到混乱,被迫,并且到目前为止容易出错。
class ProjectStore {
isLoading = false;
project;
tasks = {};
constructor(projectId) {
makeAutoObservable(this);
const [_fetchTasks, { data: taskData }] = useLazyQuery(TASKS_QUERY);
this._fetchTasks = _fetchTasks;
let { loading, data } = useQuery(PROJECT_AND_ROOT_TASK_QUERY, {
variables: { projectId },
});
this.isLoading = !!loading;
this.project = data?.project;
}
getTasks(taskIds) {
let { loading, data } = this._fetchTasks({
variables: { taskIds },
});
console.log(data);
}
}
export default ProjectStore;
让cmpt请求数据但无法直接使用它的感觉就像是糟糕的体系结构。
useQuery
中的数据。useEffect
来查看数据何时到达这里有什么建议吗?有时候成为一个孤独的开发者很烂。