dyo / dyo

Dyo is a JavaScript library for building user interfaces.

Home Page:https://dyo.js.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Async generator components

Zolmeister opened this issue · comments

Problem: After suspending to a promise, hooks can no longer be called. This is necessarily true because the stack is async.

Root = ->
  useMemo -> 1
  await Promise.resolve null
  # TypeError: Cannot read property 'owner' of null
  useMemo -> 2
  h 'div', 'abc'

Proposal: Allow components to be async generators, where the final result is the tree.

Root = ->
  useMemo -> 1
  yield await Promise.resolve null
  useMemo -> 2
  h 'div', 'abc'

Currently async generator components render at each yield, but I think this version is more useful

Turns out this already works

Root = ->
  useMemo -> 1
  yield await Promise.resolve null
  useMemo -> 2
  yield h 'div', 'abc'