Reactjs 为什么阿波罗客户端在缓存注册成功后不重新呈现UI?
就像下面的屏幕截图一样,我正在尝试向我的数据库添加一个任务,并在更新时在客户端渲染它。它确实成功地使用my db读取查询和规范化缓存,并添加到缓存中,如下面的屏幕截图所示。问题是,即使在我的代码执行之后,屏幕也不会再次呈现 它确实将新任务正确注册到缓存中 下面是我执行此任务的代码 //阿波罗客户机Reactjs 为什么阿波罗客户端在缓存注册成功后不重新呈现UI?,reactjs,graphql,apollo,apollo-client,Reactjs,Graphql,Apollo,Apollo Client,就像下面的屏幕截图一样,我正在尝试向我的数据库添加一个任务,并在更新时在客户端渲染它。它确实成功地使用my db读取查询和规范化缓存,并添加到缓存中,如下面的屏幕截图所示。问题是,即使在我的代码执行之后,屏幕也不会再次呈现 它确实将新任务正确注册到缓存中 下面是我执行此任务的代码 //阿波罗客户机 await createBoard({ variables: { title, projectId }, refetchQueries: \[ {
await createBoard({
variables: { title, projectId },
refetchQueries: \[
{
query: GetBoardsDocument,
variables: { projectId },
},
\],
update: (cache, { data }) => {
const newBoardRes = data?.createBoard.boards;
const newBoard = newBoardRes && newBoardRes\[newBoardRes.length - 2\];
const existingBoards = cache.readQuery({
query: GetBoardsDocument,
variables: { projectId },
});
// console.log("newBoard", newBoard);
if (!existingBoards) return;
console.log("existingBoards", existingBoards);
console.log("newBoardRes", newBoardRes);
// cache.evict({ fieldName: "boards:{}" });
if (!newBoardRes) return; cache.writeQuery({
query: GetBoardsDocument,
variables: { projectId },
data: {
getBoards: {
boards: \[...existingBoards.getBoards.boards, ...newBoardRes\],
// boards: \[...newBoardRes\],
},
},
});
// console.log("handleCreateBoard", writeRes);
if (refetch) refetch();
},
});
};
我不明白为什么它不更新用户界面。据我所知,apollo客户端会更新其缓存,从而支持数据更改,因此应该对组件重新加载做出反应
我是不是遗漏了什么?
请告知。“添加任务”与“createBoard”。。。重新蚀刻的查询请求响应。。。如何渲染?组件(+查询)结构?“添加任务”与“createBoard”。。。重新蚀刻的查询请求响应。。。如何渲染?组件(+查询)结构?