diff --git a/pynecone/components/layout/cond.py b/pynecone/components/layout/cond.py index d80f306f2..a77b6aaa0 100644 --- a/pynecone/components/layout/cond.py +++ b/pynecone/components/layout/cond.py @@ -38,8 +38,14 @@ class Cond(Component): Returns: The conditional component. """ + from pynecone.components.layout.foreach import Foreach + if comp2 is None: comp2 = Fragment.create() + if isinstance(comp1, Foreach): + comp1 = Fragment.create(comp1) + if isinstance(comp2, Foreach): + comp2 = Fragment.create(comp2) if isinstance(comp1, Cond): comp1.is_nested = True if isinstance(comp2, Cond): diff --git a/pynecone/components/tags/iter_tag.py b/pynecone/components/tags/iter_tag.py index a588eef54..9fe6f1d0f 100644 --- a/pynecone/components/tags/iter_tag.py +++ b/pynecone/components/tags/iter_tag.py @@ -58,6 +58,7 @@ class IterTag(Tag): The rendered component. """ # Import here to avoid circular imports. + from pynecone.components.layout.cond import Cond from pynecone.components.layout.foreach import Foreach from pynecone.components.layout.fragment import Fragment @@ -73,8 +74,8 @@ class IterTag(Tag): assert len(args) == 2 component = render_fn(arg, index) - # Nested foreach components must be wrapped in fragments. - if isinstance(component, Foreach): + # Nested foreach components or cond must be wrapped in fragments. + if isinstance(component, (Foreach, Cond)): component = Fragment.create(component) # Set the component key.