Prevent file viewer unnecessary re-renders #6662
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.
Motivation and Context
I noticed when working on the Jupyter notebook viewer updates that many re-renders were being triggered on the various file viewer components, for all types of files. In general we should avoid unnecessary re-renders when possible.
Your Changes
Description:
BinaryViewer
,ImageViewer
,NotebookViewer
,PdfViewer
, andTextViewer
into ReactPureComponent
s to prevent re-rendering when props and state don't change.visibleAnnotations
state toSubmissionFilePanel
to prevent it from being recomputed at eachrender
. This also allows the same object to be passed to the "viewer" component, taking advantage of the change intoPureComponent
s.ResultComponent
, remove unnecessary calls torefreshAnnotations
. The requests already trigger Javascript code (increate.js.erb
) that will update theannotations
state.Type of change (select all that apply):
Testing
Tested manually in the UI. Logged component render calls to ensure that the unnecessary re-renders no longer occurred.
Questions and Comments (if applicable)
Checklist