diff --git a/packages/reflex-base/src/reflex_base/components/component.py b/packages/reflex-base/src/reflex_base/components/component.py index a1d6c8c8956..8f47f447c7d 100644 --- a/packages/reflex-base/src/reflex_base/components/component.py +++ b/packages/reflex-base/src/reflex_base/components/component.py @@ -1750,7 +1750,12 @@ def _get_all_imports(self, collapse: bool = False) -> ParsedImportDict: The import dict with the required imports. """ imports_ = imports.merge_parsed_imports( - self._get_imports(), *[child._get_all_imports() for child in self.children] + self._get_imports(), + *[child._get_all_imports() for child in self.children], + *[ + component._get_all_imports() + for component in self._get_components_in_props() + ], ) return imports.collapse_imports(imports_) if collapse else imports_ diff --git a/tests/units/components/test_component.py b/tests/units/components/test_component.py index 5b3e601f176..de397442311 100644 --- a/tests/units/components/test_component.py +++ b/tests/units/components/test_component.py @@ -522,6 +522,32 @@ def test_get_imports(component1, component2): } +def test_get_all_imports_includes_components_in_props(): + """Test that _get_all_imports collects imports from components in props.""" + + class InnerComponent(Component): + """A component that requires a specific import.""" + + def _get_imports(self) -> ParsedImportDict: + return {"some-library": [ImportVar(tag="SomeTag")]} + + class OuterComponent(Component): + """A component with a component-typed prop.""" + + fallback: Component | None = None + + def _get_imports(self) -> ParsedImportDict: + return {"outer-library": [ImportVar(tag="OuterTag")]} + + inner = InnerComponent.create() + outer = OuterComponent.create(fallback=inner) + all_imports = outer._get_all_imports() + assert "some-library" in all_imports, ( + "_get_all_imports() should collect imports from components in props" + ) + assert "outer-library" in all_imports + + def test_get_custom_code(component1: Component, component2: Component): """Test getting the custom code of a component.