Conversation
|
Size Change: +2 B (0%) Total Size: 1.24 MB
ℹ️ View Unchanged
|
There was a problem hiding this comment.
Code looks good to me and the functionality is still thre. I did not test the actual improvement b/c I trust @youknowriad 🚀
| const textContent = useMemo( () => { | ||
| if ( isCollapsed( record ) ) { | ||
| return getTextContent( slice( record, 0 ) ); | ||
| } | ||
| }, [ record ] ); |
There was a problem hiding this comment.
Sorry, I'm probably missing the context here, but I'm curious. What's the reason for using memo for the string value? The getTextContent doesn't look like an expensive method.
There was a problem hiding this comment.
To be honest, there's no particular reason for this one but my idea was that this component is kind of a bottleneck to the less we do on rendering, the better.
There was a problem hiding this comment.
That makes sense. Thank you, Riad 🙇
There was a problem hiding this comment.
Should we add some inline comment on these preemptive hot-path optimizations in case the opposite becomes true (and running useMemo becomes more expensive)?
There was a problem hiding this comment.
I can do that 👍
…p-tests-config * 'trunk' of github.com:WordPress/gutenberg: (88 commits) Components: refactor `AlignmentMatrixControl` to pass `exhaustive-deps` (#41167) [RNMobile] Add 'Insert from URL' option to Image block (#40334) [RNMobile] Improvements to Getting Started Guides (#40964) Post Author Name: Add to and from Post Author transformations (#41151) CheckboxControl: Add unit tests (#41165) Improve inline documentation (#41209) Mobile Release v1.76.1 (#41196) Use explicit type definitions for entity configuration (#40995) Scripts: Convert file extension to js in `block.json` during build (#41068) Reflects revert in 6446878 (#41221) get_style_nodes should be compatible with parent method. (#41217) Gallery: Opt-in to axial (column/row) block spacing controls (#41175) Table of Contents block: convert line breaks to spaces in headings. (#41206) Add support for button elements to theme.json (#40260) Global Styles: Load block CSS conditionally (#41160) Update URL (#41188) Improve autocompleter performance (#41197) Site Editor: Set min-width for styles preview (#41198) Remove Navigation Editor screen from experiments page (#40878) Fix broken Page title for pages created inline within in Nav block (#41063) ...
What?
If you try to monitor keyboard typing performance in the editor, you'll notice that there's two events that constitute the "type" metric. KeyDown and KeyPress. The biggest chunk of work is happening on KeyPress but I noticed that there was a consistent 2ms time spent re-rendering the RichTextWrapper on keydown. This PR does a small refactoring that makes the keydown event last less than 1ms. I know it's a small gain and might not be visible on the metric average but small improvement + small improvement = big improvement :) (especially since this small improvement doesn't hurt the component code base at all, it's actually better this way)
Testing Instructions
Check that the block autocomplete still works as expected.