通过数据加载对组件的延迟加载/暂挂进行反应

我正在尝试将React lazy / Suspense应用到例如4个子组件。当前设置是在安装组件时,调用graphQL查询,该查询将响应呈现子组件所需的所有数据。因此,当数据仍在获取时,我将像这样进行常规设置:

return (
    {!loading && (
        <>
            <Component1 {...someProps} />
            <Component2 {...someProps} />
            <Component3 {...someProps} />
            <Component4 {...someProps} />
        </>
    )}
    
    {loading && <Loading />}
)

现在,我想在这个相同的组件中应用React lazy / suspense,这是我到目前为止所做的:

const Component1 = lazy(() => import("./path..."));
const Component2 = lazy(() => import("./path..."));
const Component3 = lazy(() => import("./path..."));
const Component4 = lazy(() => import("./path..."));

...

return (
    <Suspense fallback={<Loading />}>
    {!loading && (
        <>
            <Component1 {...someProps} />
            <Component2 {...someProps} />
            <Component3 {...someProps} />
            <Component4 {...someProps} />
        </>
    )}
    
    {loading && <Loading />}
    </Suspense>
)

问题在于,现在有2个<Loading />,一个用于动态导入(来自Suspense),另一个用于异步数据获取,尽管一次只显示其中一个。我意识到,如果更改悬念加载程序的样式,它们会在“加载”阶段的不同时间出现,直到组件列表最终完全呈现。

幕后发生的事情是什么,这是正确的方法吗(因为数据获取的暂记仍处于试验阶段)?

iCMS 回答:通过数据加载对组件的延迟加载/暂挂进行反应

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2023679.html

大家都在问