【问题标题】:Apollo useMutation response best practiceApollo 使用突变响应最佳实践
【发布时间】:2020-11-24 03:36:19
【问题描述】:

我正在使用 Apollo 和 Shopify 的 Polaris 组件,但我不确定管理我对突变的响应的最佳方法。

我通过以下方式声明我的突变。

const [updateShop, {error, data}] = useMutation(SHOP_SETTINGS_MUTATION);

并像这样在我的组件中调用它。

    const saveBar =
        showSaveBar ? (
            <ContextualSaveBar
                message="Unsaved changes"
                saveAction={{
                    onAction: () => {
                        updateShop({variables:{...shop, settings:settings}});
                    }
                }}
                discardAction={{
                    onAction: () => {
                        // do something here

                    }
                }}
            />) : (null);

但是 InteliJ 显示以下警告:

从 updateShop 返回的 Promise 被忽略更少... (⌘F1) 检查信息:报告函数调用返回一个以后不使用的 Promise。这些通常是无意的,表示错误

我在这里做错了吗?

image showing InteliJ is suggesting my code is bad

【问题讨论】:

    标签: reactjs apollo react-apollo apollo-client


    【解决方案1】:

    updateShop 函数返回一个 Promise,它将返回您的突变结果。该警告只是告诉您它被忽略了。通常你会做这样的事情......

                        onAction: () => {
                            updateShop({variables:{...shop, settings:settings}})
                                .then((res) => { 
                                   ...check the result object here to ensure
                                   the operation succeeded...
                                });
                        }
    

    https://www.apollographql.com/docs/react/data/mutations/#result

    【讨论】:

    • 谢谢@Jason。但这不是无关紧要的,因为我在声明中使用:const [updateShop, {error, data}] = useMutation(SHOP_SETTINGS_MUTATION);{error, data} 处理响应?
    • 确实如此,但我只是想指出警告的原因。此外,您为数据和错误定义了一个值,但在操作完成时没有通知。对于长时间运行的进程,您可能希望禁用用户输入并在完成后重新启用它。在此处使用您的方法,您可能希望使用 useEffect 挂钩,并将数据和错误值作为依赖项。
    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2019-04-10
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多