Migrate ImageView to a functional component#25579
Conversation
rezkiy37
left a comment
There was a problem hiding this comment.
Also, we prefer useRef/useCallback instead of React.useRef/React.useCallback.
| React.useEffect(() => { | ||
| imageLoadingStart(); | ||
| // eslint-disable-next-line react-hooks/exhaustive-deps -- adding imageLoadingStart to deps array causes the component to be stuck on loading | ||
| }, [url]); |
There was a problem hiding this comment.
did you try to create the imageLoadingStart with a useCallback, maybe because it isn't a stable function and on a rerender the useEffect gets called again. Try using the useCallback first instead of remove it from the dependency array, if not please a more detailed explanation why not adding it
There was a problem hiding this comment.
I have tried, and the component failed to load the image, the effect was called too many times and therefore it got stuck on loading.
There was a problem hiding this comment.
I added a more detailed explanation as to why we need to disable this rule. Let me know if that's enough!
|
@ Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Reviewer Checklist
Screenshots/VideosWebMobile Web - ChromeMobile Web - SafariDesktopAndroidCould not test on Android due to dev issues. |
|
Congrats, that’s your 5th PR merged! 🎉 Do you know about the ContributorPlus role? It’s an opportunity to earn more in the Expensify Open Source community. Keep up the great work - thanks! |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/marcaaron in version: 1.3.58-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.58-5 🚀
|
|
🚀 Deployed to staging by https://github.com/marcaaron in version: 1.3.59-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.59-5 🚀
|

Details
Fixed Issues
$ #16166
PROPOSAL:
Tests
Offline tests
Same as testing steps above
QA Steps
Same as testing steps above
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Web
Mobile Web - Chrome
Mobile Web - Safari
Desktop
iOS
imageviewer_ios-compressed.mp4
Android
imageviewer_android-compressed.webm