Include a more stable way of detecting when withOnyx keys change #412
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.
This is another take on the same fix that I did in #407.
Details
There are two cases that need to be handled slightly different in
componentDidUpdate()
:this.state.loading
going fromtrue
tofalse
This causes some differences in how the
previousKey
is calculated in order to compare if the key changed or not. Hopefully, the code comments explain this pretty well.Related Issues
NA
Automated Tests
Yes, this is fully covered by automated tests and it was how I found that the solution in #407 was not correct.
Manual Tests
npm run build
and copy the changes to the App'snode_modules/react-native-onyx
folderReportScreen.js
to have a log at the top of the render method likeconsole.log('Tim ReportScreen()');
npm run web
on App to start the appNow, to verify that the dependent keys are working:
Scanning...
label. That label won't be there if the dependent data isn't loading properlyAuthor Checklist
### Related Issues
section aboveTests
sectiontoggleReport
and notonIconClick
)myBool && <MyComponent />
.STYLE.md
) were followedAvatar
, I verified the components usingAvatar
are working as expected)/** comment above it */
this
properly so there are no scoping issues (i.e. foronClick={this.submit}
the methodthis.submit
should be bound tothis
in the constructor)this
are necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);
ifthis.submit
is never passed to a component event handler likeonClick
)Avatar
is modified, I verified thatAvatar
is working as expected in all cases)main
branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTest
steps.Screenshots/Videos
Web
2023-10-31_15-38-18.mp4
Mobile Web - Chrome
Mobile Web - Safari
Desktop
2023-10-31_15-45-31.mp4
iOS
2023-10-31_16-23-26.mp4
Android
Uploading 2023-11-01_10-00-27.mp4…