From 45fc6b057a6ddd750a77e5b0752a9c48dad372e2 Mon Sep 17 00:00:00 2001 From: Masen Furer Date: Mon, 10 Feb 2025 13:17:00 -0800 Subject: [PATCH] Dedupe custom codes emitted by rx.memo components --- .../jinja/web/pages/custom_component.js.jinja2 | 9 ++++++--- reflex/compiler/compiler.py | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) 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, )