Hi @derek-zhou!
Currently, Surface does not allow using a component recursively. However, you can work around this issue by moving the recursion to a separate function. For instance:
defmodule Tree do
...
@doc "The root node"
prop node, :map
def render(assigns) do
~H"""
{{ render_node(@node) }}
"""
end
defp render_node(node) do
~H"""
<div>
{{ node.name }}
<div :for={{ child <- node.children }}>
{{ render_node(child) }}
</div>
</div>
"""
end
end






















