#7111·reflex

通过 import_var 来声明 Lucide 深度导入,而不是使用 _get_imports

作者: masenf创建于 2026年9月11日更新于 2026年9月11日

跟踪 #7109 和 #6627 中的静态图标深度导入工作。`Icon` 和 `DynamicIcon` 目前通过覆盖 `packages/reflex-components-lucide/src/reflex_components_lucide/icon.py` 中的 `_get_imports()` 来实现其深度导入。它们的 `import_var` 属性仍然描述了从 `Component` 继承的包根导入。例如,`rx.icon("apple")` 通过 `import_var` 将名为 `Apple` 的导入暴露为包路径为 `/`,而 `_get_imports()` 则将其替换为来自 `lucide-react/dist/esm/icons/apple.mjs` 的实际默认导入,并重命名为 `LucideApple`。`DynamicIcon` 类似地在 `_get_imports()` 中只声明了 `/dynamic.mjs`。将这些导入声明移至 `import_var` 属性的覆盖中,允许基础 `_get_imports()` 实现将其与组件的其他导入一起组合。保留静态图标的默认绑定、别名和文件名映射,以及动态图标的命名 `DynamicIcon` 绑定和 `/dynamic.mjs` 路径。这还避免了在组合的导入字典中替换整个 Lucide 条目。最新的 #7109 更改使 `bundle_library(component)` 直接从 `_get_imports()` 获取渲染路径。因此,在注册特定图标时,`root.jsx` 中不再需要不必要的 `import * as lucide_react from "lucide-react"`。本次跟进是一项一致性清理,而不是该修复的先决条件:`import_var` 本身应描述实际导入的模块,因此使用该属性的调用者可以保留相同的深度导入优化。验证应包括:

内容来源: reflex-dev/reflex