Refactor Child Rendering to accept Observable #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The createElement function currently accepts a list of child nodes that are immediately rendered, which makes it hard for content to be dynamic. To handle one part of this, the Ternary component was implemented, which accepted a boolean observable and returned a truthy or falsy node. This does not feel like the correct API, though, as we would need to special case switch statements, if then statements, and the null case, not to mention rendering lists of content.
To solve this issue, we should instead accept an observable as the children argument in createElement. This observable emits a stable key and a PipeNode, The latter of which gets attached to the parent element (or updates an existing element with the stable key). This allows for all of the dynamic content items to be implemented at once, rather than special casing each of them.