程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 Apollo Client大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Apollo Client?

开发过程中遇到使用 Apollo Client的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Apollo Client的解决方法建议,希望对你解决使用 Apollo Client有所启发或帮助;

我有一个关于 Apollo 客户端在调度更新突变时的行为的问题。

我有一个小应用程序可以获取数据并允许您修改它。修改后,更新突变被发送到graphQL。由于单个项目的更新会触发 Apollo 的自动缓存更新,因此可以在 UI 上立即看到更改。

但是,我注意到在更新后刷新页面时,我之前获取的项目的顺序发生了变化,最近更新的项目位于列表末尾。

我只是想知道这是否是预期的正常行为,是否有办法强制缓存在更新后保持相同的顺序?

编辑:这是我的解析器、变异和 useMutation 调用的代码。

解析器:

async updateUser(parent,args,ctx,info) {
            const { ID,input } = args;
            const updatedUser = await ctx.prisma.user.update({
                where: {
                    ID,},data: {
                    ...input,});
            return updatedUser;
        }

突变:

export const updatE_user_R_494_11845@UTATION = gql`
    mutation updateUser($ID: String,$input: createuserinput) {
        updateUser(ID: $ID,input: $input) {
            ID
            name
            email
        }
    }
`;

使用突变:

        updateFIEld({
            variables: {
                ID: data.fIEldID,input: {
                    [data.fIEldname]: value,});

编辑 2:这是正在发生的事情的 gif。

使用 Apollo Client

谢谢!

解决方法

@H_396_2@mutation update 选项可以在 BE 排序之后正确更新(或插入)列表/数组(查询缓存结果)...

...但它会在更长的数据集上失败,分页结果 - 列表查询重新获取记录可以从当前 [页面] 列表/数组中删除。这将是更令人困惑的行为。

恕我直言不值得付出努力,这已经是可以接受的行为(索引/排序字段的突变)。

可能的解决方案:

  • 不重新获取列表查询,只更新查询列表缓存(变异update - 它会更新列表视图);
  • 对于小型数据集,请使用 FE 可排序表组件(BE 顺序无关紧要)。

大佬总结

以上是大佬教程为你收集整理的使用 Apollo Client全部内容,希望文章能够帮你解决使用 Apollo Client所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用