在从中继 11

问题描述

我正在从 relay 10 迁移到 relay 11,并且在从 refetch 调用 useRefetchableFragment 时遇到奇怪的错误。 这是我的组件:

const EditClient: FC<Props> = ({ clientRef }) => {
    const [refetchData,refetch] = useRefetchableFragment<EditClientContactsRefetchQuery,any>(
        graphql`
            fragment EditClient_refetch_client on Client
                @refetchable(queryName: "EditClientContactsRefetchQuery") {
                contacts {
                    ...ContactList_contact
                }
            }
        `,clientRef
    );

    return (
        <>
            <ContactList contact={refetchData.contacts} />
            <button onClick={() => refetch({},{ fetchPolicy: 'network-only' })>
                refetch
            </button>
        </>
    );
}

然后我点击按钮,它重新获取graphql查询但也抛出一个错误

react_devtools_backend.js:2430 警告:中继:在 refetch 中的片段 EditClient_refetch_client 上以高于预期的优先级意外调用 useRefetchableFragment()。看起来您尝试在高优先级更新下调用 refetch,但可能导致组件挂起的更新应按正常优先级安排。确保您从 refetch 挂钩调用 startTransition() 内的 useSuspenseTransition()

什么是 high priority update 以及如何将 onClick 事件放入 normal priority? 中继文档没有说明如何调用 refetch 函数

如果我将 refetch 调用放入 setTimeout 回调中,我不会出错,但感觉不对。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)