Editor: Optimize Inserter props generation and reconciliation#11243
Merged
youknowriad merged 1 commit intomasterfrom Oct 30, 2018
Merged
Editor: Optimize Inserter props generation and reconciliation#11243youknowriad merged 1 commit intomasterfrom
youknowriad merged 1 commit intomasterfrom
Conversation
2928106 to
8e24e8d
Compare
4 tasks
8e24e8d to
1ce8c5c
Compare
gziolo
approved these changes
Oct 30, 2018
Member
gziolo
left a comment
There was a problem hiding this comment.
I no longer see re-renders when navigating between blocks. Code is very identical to my previous implementation but this one is backward compatible so this is a big plus.
Nice work! 💯
daniloercoli
added a commit
that referenced
this pull request
Oct 31, 2018
…rnmobile/port-quote-block-step-1 * 'master' of https://github.com/WordPress/gutenberg: (21 commits) Fix property path on get() call (#10962) Fixed typos on block api documentation (#11298) Export `switchToBlockType` to be used mobile side when merging two blocks. (#11294) RichText: Remove unused `ref` assignment to RichText (#11222) Remove findDOMNode from Tooltip component (#11169) Components: Remove redundant onClickOutside handler from Dropdown (#11253) added myself to the contributors list (#11260) Add complete post type labels for Resuable Blocks (#11278) Increase specificity for active radio/checkbox input styling (#11290) Fixed "artifact" misspelling in docs. (#11291) Nux package: fix incorrect named deprecated import (#11283) Rename parentClientId to rootClientId for consistency (#11274) chore(release): update changelog files chore(release): publish Update plugin version to 4.2.0. (#11258) Data: Use turbo-combine-reducers in place of Redux (#11255) Revert using Icon in IconButton to avoid regression in plugin icons (pinned icons) (#11256) Block List: Use default Inserter for sibling insertion (#11018) Editor: Optimize Inserter props generation and reconciliation (#11243) RichText: fix format placeholder (#11102) ... # Conflicts: # packages/block-library/src/quote/index.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Related (potentially blocks): #11018
This pull request seeks to apply minor refactoring to the Inserter to optimize its rendering:
selectedBlockto the root component, as its reference changes frequently (i.e. every keystroke in the selected paragraph) and is only needed for the opened menu.itemsarray to the root component, and pass only the simple boolean reference ofhasItemsfor use in considering whether the inserter should be rendered at all (viaifCondition)Further optimization could be achieved in simplifying how
hasItemsis calculated, sincegetInserterItemsis easily the most complex / convoluted selector we have in thecore/editorstore. This has not been done here, but I foresee one or more of:getInserterItemsinto more granular memoized selectorshasInserterItemsselector which performs the more simple filtering (not mapping) operationsgetInserterItemsto the inserter component itself, passing instead the minimal raw data necessary.Testing instructions:
Verify there are no regressions in the behavior of the inserter, with notable variations:
Using React DevTools "Highlight Updates" option, verify that the Inserter does not re-render when typing within a paragraph.