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:
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):

View File

@ -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.