【问题标题】:useMemo Critical dependency: the request of a dependency is an expressionuseMemo 关键依赖:一个依赖的请求是一个表达式
【发布时间】:2021-10-05 08:27:26
【问题描述】:

首先,我使用 React.lazy 和 useMemo 加载一个 Redux 连接的组件

const Component = useMemo(() => lazy(() => import('./Component')), []);

然后,我根据我的路线使用BrowserRouter 渲染它,如下所示:

<BrowserRouter>
  <Switch>
    <Suspense fallback={<>Loading...</>}>
      <Route exact path='/' render={() => <SubscriptionList/> } />
    </Suspense>
  </Switch>
</BrowserRouter>

我有多个要延迟加载的路由器。我无法提取“useMemo()”函数,因为我收到警告:

Critical dependency: the request of a dependency is an expression

我做错了什么,这里有什么问题?

【问题讨论】:

    标签: reactjs webpack lazy-loading react-usememo


    【解决方案1】:

    Lazy 足以延迟加载不需要 useMemo 的组件。

    你可以这样记忆你的组件。

    export const MemoizedMovie = React.memo(Movie);

    如果你在文件顶部编写 useMemo ,那么所有的钩子都应该只在 react 组件内调用是错误的。

    【讨论】:

    • 加载就足够了,但它不会阻止在某些设置中重新渲染,而使用 useMemo 则可以。
    • 能不能上传完整代码或者详细代码看看有什么问题!
    猜你喜欢
    • 2020-06-15
    • 2022-11-10
    • 2016-08-28
    • 2017-08-11
    • 2020-10-11
    • 2022-08-15
    • 2021-06-13
    • 2021-06-13
    • 2019-05-04
    相关资源
    最近更新 更多