chore: update sequencing inside blocks #10939
Merged
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.
Right now, blocks are created after local updates have been applied. Given something like this...
...the compiler spits out something like this:
This is... fine, but it would perhaps be clearer if we got something like this instead:
This PR doesn't produce exactly that order, since it turns out we need to apply actions/bindings/events after the final
render_effect
, otherwise things go awry. But it's very close to that ideal.The reason this is valuable is that it should, if my hunch is correct, unlock a slightly simpler approach to hydration. (It might be worth waiting until we can actually test that theory before merging this, to avoid needless changes.)
Note that I had to compromise in one place: an action inside a block (such as an
{#if ...}
or{#each ...}
will run before an action in an earlier element. In other wordsb
will run beforea
:I don't consider that a big problem — actions ought to be independent of one another — but it's worth noting.
Before submitting the PR, please make sure you do the following
feat:
,fix:
,chore:
, ordocs:
.Tests and linting
pnpm test
and lint the project withpnpm lint