fix(jsx/dom): fix memo
for DOM renderer
#3568
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.
#3473
#3567
The
jsx/dom
memoization was generally behaving incorrectly, so I'm fixing it.12ee829
In the past, the code used the same approach as for
toString(),
“holding memoized data in JavaScript memory,” but when rendering to the DOM, I found that memoization could be achieved by “not re-evaluate components” in the renderer, so the processing within the renderer was changed accordingly.Also, looking at the code generated by React Compiler, it seemed that React expected the ReactNode object generated by
jsx()
to be cached and reused, and to be memoized, so I made it behave in the same way. I applied this branch to the code at https://github.com/sor4chi/explore-react-compiler-with-hono-jsx and confirmed that it was memoized.38a3c7e / 3b45b57
I changed the implementation of
memo
so that memoization is done using a new mechanism.The author should do the following, if applicable
bun run format:fix && bun run lint:fix
to format the code