diff --git a/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 b/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 index e729d7273..159a27b27 100644 --- a/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +++ b/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 @@ -1,11 +1,14 @@ {% extends "web/pages/base_page.js.jinja2" %} {% from "web/pages/macros.js.jinja2" import renderHooks %} -{% block export %} -{% for component in components %} -{% for custom_code in component.custom_code %} +{% block declaration %} +{% for custom_code in custom_codes %} {{custom_code}} {% endfor %} +{% endblock %} + +{% block export %} +{% for component in components %} export const {{component.name}} = memo(({ {{-component.props|join(", ")-}} }) => { {{ renderHooks(component.hooks) }} diff --git a/reflex/compiler/compiler.py b/reflex/compiler/compiler.py index c2a76aad3..e81564d64 100644 --- a/reflex/compiler/compiler.py +++ b/reflex/compiler/compiler.py @@ -246,12 +246,20 @@ def _compile_components( for comp_import in comp_render["dynamic_imports"] } + custom_codes = { + comp_import: None + for comp_render in component_renders + if "custom_code" in comp_render + for comp_import in comp_render["custom_code"] + } + # Compile the components page. return ( templates.COMPONENTS.render( imports=utils.compile_imports(imports), components=component_renders, dynamic_imports=dynamic_imports, + custom_codes=custom_codes, ), imports, )