React 会多次导入同一个包吗?

Fre*_*nge 3 javascript reactjs webpack

我有一个简短的问题:

在 React 中,我们为每个组件导入 React 组件:

import React from 'react'
Run Code Online (Sandbox Code Playgroud)

这是否意味着如果我有一个使用多个子组件的屏幕(每次也导入 React),React 包是否会被导入多次?

所以基本上:

1 个带有 4 个子组件的屏幕 = 5 x 加载的 React 包 = 5 倍所使用的 React 内存

或者

1 个屏幕,包含 4 个子组件= 加载 1x React 包

或者它只导入一次反应包,然后在再次需要时访问它?

Set*_*ske 5

或者它只导入一次反应包,然后在再次需要时访问它?

基本上是的。您的构建工具/捆绑程序(即 webpack)将获取您在整个应用程序中导入的包并将它们包含在您的构建中。它会识别出这些是相同的包并且仅导入一次。

  • 请记住,有时,当您导入的包又导入与您在其他地方使用的包同名但版本不同的其他包时,事情会变得很奇怪。例如,您可能正在使用 React v16.9.0,但您还导入了“somePlugin”,而后者又依赖于 React v16.2.2。npm [处理得很好](https://lexi-lambda.github.io/blog/2016/08/24/understanding-the-npm-dependency-model/),[webpack 也是如此](https:// blog.jakoblind.no/webpack-how-decides-what-to-bundle/) (2认同)