Fix interactions between foreach and cond (#521)

This commit is contained in:
Thomas Brandého 2023-02-12 18:24:55 +01:00 committed by GitHub
parent d3c3174ba4
commit d57d9c78cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 2 deletions

View File

@ -38,8 +38,14 @@ class Cond(Component):
Returns: Returns:
The conditional component. The conditional component.
""" """
from pynecone.components.layout.foreach import Foreach
if comp2 is None: if comp2 is None:
comp2 = Fragment.create() comp2 = Fragment.create()
if isinstance(comp1, Foreach):
comp1 = Fragment.create(comp1)
if isinstance(comp2, Foreach):
comp2 = Fragment.create(comp2)
if isinstance(comp1, Cond): if isinstance(comp1, Cond):
comp1.is_nested = True comp1.is_nested = True
if isinstance(comp2, Cond): if isinstance(comp2, Cond):

View File

@ -58,6 +58,7 @@ class IterTag(Tag):
The rendered component. The rendered component.
""" """
# Import here to avoid circular imports. # Import here to avoid circular imports.
from pynecone.components.layout.cond import Cond
from pynecone.components.layout.foreach import Foreach from pynecone.components.layout.foreach import Foreach
from pynecone.components.layout.fragment import Fragment from pynecone.components.layout.fragment import Fragment
@ -73,8 +74,8 @@ class IterTag(Tag):
assert len(args) == 2 assert len(args) == 2
component = render_fn(arg, index) component = render_fn(arg, index)
# Nested foreach components must be wrapped in fragments. # Nested foreach components or cond must be wrapped in fragments.
if isinstance(component, Foreach): if isinstance(component, (Foreach, Cond)):
component = Fragment.create(component) component = Fragment.create(component)
# Set the component key. # Set the component key.