I went through countless tutorials on implementing this feature but none worked. This video has saved me the struggle and hustle. Thanks so much bro.
@techienomadiso89704 жыл бұрын
My guy, the world needs to know of you. Your content is quality. People are missing out if they don't know this channel
@CatalinMironDev4 жыл бұрын
Thank you so much Francis for showing your appreciation, it means a lot to me ✌️
@optimusdebugger96383 жыл бұрын
just discovered him but he's dropping some bomb
@mpeguese210 Жыл бұрын
@Catalin This tutorial helped me complete revamp a project I was working on. Thanks for much man for all the Support you give the RN Community.
@jamieblair43364 жыл бұрын
Not all heroes wear capes. Thank you Catalin for an awesome tutorial.
@CatalinMironDev4 жыл бұрын
Glad it was helpful! Hat down Jamie ✌️
@philipprajahmourasrivastav23984 жыл бұрын
Amazing video, thank you so much for shedding light on how some basic animations work. One thing that I however ran into was the the indicator wouldn't show up until it did a hot reload. Whenever I would run the app from scratch the indicator wouldn't be there. I found this to be because ref.current.measureLayout was initially returning 0 for all of the values. I'm not sure why but if anyone else runs into this my solution was to put the ref.current in the array at the end of the useEffect. This essentially makes sure that useEffect runs again whenever ref.current changes (like a component will update). Hope this helps someone. Thanks again! Also video suggestion from me would be a collapsible view that collapses when you begin scrolling a list below it.
@DaveBatistaa3 жыл бұрын
Thank you so much, Sir!
@angNguyen-cg8gk3 жыл бұрын
can you please help me, in this case what exactly "the ref.current"
@shafqatullah66663 жыл бұрын
@@angNguyen-cg8gk same here... no value "[object Object],[object Object],[object Object],[object Object],[object Object]"
@cuongnguyen12302 жыл бұрын
Thank you, a lot...
@BDCCNVUONGANKHANG Жыл бұрын
thanks you so much bro, my problem is same. I fixed it, yeah
@prakashd8424 жыл бұрын
Thanks for sharing such a valuable content , we are thankful
@CatalinMironDev4 жыл бұрын
So nice of you! Thanks Prakash! ✌️
@faizanansari9753 жыл бұрын
@@CatalinMironDev i have a share a small video on ur Twitter handle please check the dm n plz make a video by achieving that in react native flatlist
@amanmittal4164 жыл бұрын
This video has the best intro I've ever seen (*the sideways head tilt part!*) 🎃
@CatalinMironDev4 жыл бұрын
hahaha thanks Aman! ✌️🤗
@GuperGER4 жыл бұрын
Wow! This is looking awesome! I'm currently working in Xamarin Forms but after watching some of your videos I can definately see me trying out React Native :) Keep it up! :)
@CatalinMironDev4 жыл бұрын
Thanks a lot, I’m glad you found it useful ✌️ Thanks Vicent!
@npc73x3 жыл бұрын
Such a valuable content,that go through multiple steps, keep doing your awesome work
@pradeepthite28946 ай бұрын
Brother you are awesome. You explained very well. I love your explain style.
@shareef21784 жыл бұрын
I rarely subscribe to channels but this channel is worth to subscribe to, thanks a lot for your hard work, keep it up, I love your content.
@CatalinMironDev4 жыл бұрын
Thank you so much Syarif! It means a lot to me ✌️
@facundofernandez11444 жыл бұрын
Your videos are excellent, thank you very much for sharing this content. I am always waiting for the next one to learn more. Greetings from Argentina.
@CatalinMironDev4 жыл бұрын
Thanks a lot, I’m glad you found it useful ✌️ Thanks Facundo ✌️
@haightgao23896 ай бұрын
Thank you for sharing such a great tutorial.
@619dixitrock4 жыл бұрын
Really helpful content. I didn't find any good content in KZbin for react native Animations. This one really is interesting and got lot of information.
@CatalinMironDev4 жыл бұрын
Thanks for sharing your feedback Dixit. I’m glad you found my videos useful ✌️
@modo_demoledor6 ай бұрын
gracias capo ,saludos desde argentina(el mejor pais del mundo hermano)
@hwj86402 жыл бұрын
Amazing video, I really enjoy your tutorial. You explain everything very well.
@anshul98563 жыл бұрын
Very helpful video! Makes me happy to know such smart people are in the same field as me :)
@aftabamin85084 жыл бұрын
thanks, dude. you have made my life easier with these great tutorials. love from Pakistan. if I get a chance I will meet you in my life.
@Pupu._2 жыл бұрын
it's difficult for me I really should repeat watching it . thank you for the amazing video !!
@yakupdurmus30082 жыл бұрын
Thanks for this tutorial ! Nice content
@collocheru4 жыл бұрын
This is incredible and the explanations of the steps is super helpful, great video 🙏
@CatalinMironDev4 жыл бұрын
Glad it was helpful! Thank you Cheruiyot! ✌️
@minotuki1004 жыл бұрын
Hey Catalin. Thanks for this tuto! Your method with forwardRef is so useful and I feel better to use functionals components with Animated than the class components. I added myself the challenge to have useNativeDriver:true. For that, I use scaleX instead of width. I share here the new scrollX interpolations : const scaleX = scrollX.interpolate({ inputRange, outputRange: measures.map((item, i) => i > 0 ? item.width / measures[0].width : 1 ), }); const translateX = scrollX.interpolate({ inputRange, outputRange: measures.map( (item, i) => item.x + item.width / 2 - measures[0].width / 2 ), }); And new styles for the Animated.View are : width: measures[0].width, transform: [{ translateX }, { scaleX }],
@sunnymittal19062 жыл бұрын
A slightly simpler way to do this might be as follows: const indicatorWidth = scrollX.interpolate({ inputRange, outputRange: measures.map((measure) => measure.width), }); // Same as video const translateX = scrollX.interpolate({ inputRange, outputRange: measures.map((measure) => measure.x + measure.width / 2), }); // mostly the same but adding measure.width / 2 to compensate for how scaling works Then the changed indicator style would just be: width: 1, transform: [{ translateX }, { scaleX }],
@erlanakylbekovich45864 жыл бұрын
I really liked your videos. More of these videos. This part of awesome!
@wom9873 жыл бұрын
Amazing tutorial bruh! you got a new sub!
@cli233 жыл бұрын
Great stuff as always, Catalin!
@usamaali7364 жыл бұрын
another excellent and insightful video as always!
@CatalinMironDev4 жыл бұрын
Thanks a lot Usama! ✌️
@radomirmijovic26052 жыл бұрын
Thanks man! Great video
@re.liable3 жыл бұрын
That was freaking awesome!
@tinpham10523 жыл бұрын
perfect bro, please create more video :D
@HOWGLAI3 жыл бұрын
Thank you MAN! That`s amazing
@TaiBradCDinh2 жыл бұрын
amazing job man, thanks a lot
@capy77733 жыл бұрын
You're awesome, I like your content. Keep going!
@luispaulo57144 жыл бұрын
Hey this is awesome. i learned so much with you. thank you so much for give me with billions of ideas.
@CatalinMironDev4 жыл бұрын
You’re more than welcome and I’m happy that you found the videos inspiring. Sharw what you’re building with us, you can join the discord, there’s a dedicated channel for sharing code there. Thanks Luis ✌️
@luispaulo57144 жыл бұрын
Yeah! i want to code some UI clone using your content about shared element and animations. How can i find you on linkedin to quote you there about teachings? Thanks man!
@riccardomirarchi41364 жыл бұрын
you are doing great man! thanks so much, love your contents
@CatalinMironDev4 жыл бұрын
Glad you like them! Cheers Riccardo! ✌️
@BrkCnAka4 жыл бұрын
It looks so good. What do we need to do to be scrollable when the data length is 10? Thanks.
@CatalinMironDev4 жыл бұрын
@@BrkCnAka that’s a great question and suggestion on the same time. I’m going to tackle this problem in a future video, where the tabs are inside a scrollable view. Thanks ✌️
@BrkCnAka4 жыл бұрын
@@CatalinMironDev Thank you for coming back. I'm looking forward to it.
@adarshjaiswal73344 жыл бұрын
@@CatalinMironDev Yeah, that's a genuine point.
@adarshjaiswal73344 жыл бұрын
@@CatalinMironDev Eagerly waiting for this.
@nguyennam67743 жыл бұрын
Thanks alot for your sharing. I follow your guides up to push(x,y,width,height) after measureLayout to above array then i got empty. I cannot put to that array so cannot setstate
@mirzairshad40634 жыл бұрын
Wooww what a creative work bro thank you very very much hero of my life
@CatalinMironDev4 жыл бұрын
Thanks a lot Mirza✌️
@duxuan49574 жыл бұрын
"Cảm ơn" - Thank you. "Rất hữu ích" - Very useful
@CatalinMironDev4 жыл бұрын
"Cảm ơn" ✌️
@duxuan49574 жыл бұрын
@@CatalinMironDev I think I and many RNers are looking forward to Ripple Effect of Material Design Buttons for both ios and android. Was it too difficult for you?
@ehtishamtahir21873 жыл бұрын
Amazing man... You are awesome
@thenoob86822 жыл бұрын
awsome... thank you man. I tried it . unfortunately my TabIndicator not rendering on the first time. but if I refresh the screen it appears.
@nathan85412 жыл бұрын
Put containerRef.current in the array at the end of the useEffect
@n_singi4 жыл бұрын
Hey Amazing tutorial man I'm on a project in which I'm using hashmap instead of array of images So, Will hashmap work in place of arrayin Flatlist section ?? plus what is the font u r using in VSCode ??
@darianaorlova24053 жыл бұрын
This is very useful for me video, thank you. You're cool.
@vvssangeeth4 жыл бұрын
Can you create uber eats list view animation after this ? This is an excellent tutorial. Thanks for that. Uber eats is also built in RN.
@CatalinMironDev4 жыл бұрын
Could you please record the screen and share the video with me? Great suggestion! Thanks Sangeeth ✌️
@vvssangeeth4 жыл бұрын
@@CatalinMironDev drive.google.com/file/d/1h_m4OC107X7xuvrLRK19W46bJqEFfSQr/view?usp=drivesdk Please find the video in above drive link. Let me know if you need anything else. Thanks for the quick response. Highly appreciated.
@smilecat96233 жыл бұрын
@@CatalinMironDev please can we do this animation with three different components. Thanks
@sinaebr73374 жыл бұрын
wonderful. thanks Man also thank you for putting starter code.
@CatalinMironDev4 жыл бұрын
You’re welcome! I’m listening to your feedback and this is what came a lot, to add the starter code. Thanks Sina ✌️
@Amitk79504 жыл бұрын
Thanks for making good stuff, learning from your tutorial 👍
@CatalinMironDev4 жыл бұрын
Thanks a lot Amit, I’m glad you found it useful ✌️
@ludwigvillalba18862 жыл бұрын
Thanks for sharing!
@thenriquedb9 ай бұрын
Awesome content!
@andreaintech43053 жыл бұрын
Hi! Thank you so much for your videos. I have a question: where did you use 'findNodeHandle'?
@call_me_rusker Жыл бұрын
I had the same question…😮
@Sara-po1jd Жыл бұрын
in your indictator you are doing this const indicatorWidth = scrollX?.interpolate({ inputRange, outputRange: measures.map((measure) => measure.width), }); const translateX = scrollX?.interpolate({ inputRange, outputRange: measures.map((measure) => measure.left), }); What I would l. iketo do is to use the useAnimatedStyle instead , Iam using teh Animated imported from react-native-reanimated.. any suggestion?
@romankoncek1503 жыл бұрын
Good job, few things I'd do differently. 1. Using onLayout prop for measurements instead all of these refs would make it more simple 2. You could use scaleX transformation instead of width so you can use native driver to have better performance 3. It is not possible to set the animation duration when pressing tabs, because scrollToOffset method does not support it. I guess the only way to solve this is to basically implement the scroling by yourself which is a lot of effort.
@amisckass95502 жыл бұрын
How I can do it with onLayout share with us code source?
@kasraafshari42934 жыл бұрын
Hey man you are amazing! thank's for your awesome videos!
@CatalinMironDev4 жыл бұрын
Thank you Kasra, I’m happy that you found them useful. ✌️
@cuongnguyen12302 жыл бұрын
Great video! How can I change the text color? Did you have any idea about it?
@deepakchoudhary30663 жыл бұрын
Awesome work, Just if i want to change the active tab text color as well how can i do that ?
@dev_ship_daily4 жыл бұрын
Awesome tutorial very helpful
@CatalinMironDev4 жыл бұрын
Thanks a lot, I’m glad you found it useful ✌️
@mausambhalekar13784 жыл бұрын
Sir you are amazing thank you so much
@annhienofficial80003 жыл бұрын
what a great tutorial
@kylebelle2463 жыл бұрын
Where was findNodeHandle used???
@ed3osp2 жыл бұрын
Awesome job
@Have_a_moment3 жыл бұрын
Cool..you are awsome dude..
@rosoonbphingkhue2053 жыл бұрын
Thanks a lot 👍👍👍👍👍
@koushiksaha35116 ай бұрын
Hi @Catalin, thank you for your tutorial .. I'm facing a problem like at first rendering indicator is not showing .. can you please resolve this issue?
@adilmezghouti2 ай бұрын
Great work
@CatalinMironDev2 ай бұрын
Thank you! Cheers!
@skippybassmaster72682 жыл бұрын
As usual love your content. I'm looking for a way to do exactly this, but where the tabs are scrollable. I'm having hard time to find the active index tab position to scroll my indicator to the right spot. Any idea ?
@PrakashChAwal3 жыл бұрын
Nice content !! Can you make a basic understanding of the react-native reanimated series?
@pascalkollie42163 жыл бұрын
If you want to change the color of the tab with a swipe you can do this const Indicator = ({ measures, scrollX, dataValues }) => { const inputRange = dataValues.map((_, i) => i * width) const IndicatorWidth = scrollX.interpolate({ inputRange, outputRange: measures.map((measure) => measure._width) }) const translateX = scrollX.interpolate({ inputRange, outputRange: measures.map((measure) => measure.x) }) const colors = scrollX.interpolate({ inputRange, outputRange: ["gray", "red", "blue"] }) return }
@zouletterider47973 жыл бұрын
hi thank for the tutorial, is it possible to add lazy load on such tabs ?
@williammendonca99754 жыл бұрын
Okay, I'm Brazilian and I follow your content. Congratulations on the work. One question. Will I have access to GitHub codes on any Patreon plan?
@CatalinMironDev4 жыл бұрын
Hi William, yes, Patreons will have access to GitHub source codes (for this tutorial but for many others). I’ve already posted there the code for another 3 upcoming tutorials. Thanks once again ✌️
@williammendonca99754 жыл бұрын
@@CatalinMironDev I'm already a Patreon. I just signed up and made PayPal payment. Let's code.
@CatalinMironDev4 жыл бұрын
@@williammendonca9975 thanks a lot and welcome to the club! ✌️
@fixocsolutions26954 жыл бұрын
can i use scrollview instead of row in tabs and measure width and x of childs
@Alijanadeli4 жыл бұрын
Hi, Thankyou for wonderfull content!
@CatalinMironDev4 жыл бұрын
Glad you enjoy it! Thanks Alijan ✌️
@sarahali-wn5sd4 жыл бұрын
Can you please do a page curl flip animation like ebooks? Thaanks for the amazing tutorials btw!
@halfshieldstudio70273 жыл бұрын
19:10 Style property 'width' is not supported by native animated module
@gabrr4 жыл бұрын
Awesome content bro
@CatalinMironDev4 жыл бұрын
Thank you Gabriel ✌️
@ChandanKumar-uo3kf3 жыл бұрын
Wow, your content is amazing . I have learnt so much from you. I got an error in this code can you please help me. ERROR: TypeError:null is not an object (evaluating 'item.ref.current.measureLayout')
@DucNguyen-kp6ul3 жыл бұрын
I have the same problem. How did you fix it?
@Netvirux3 ай бұрын
Thank You sir! But why don't you use tab view instead?
@CatalinMironDev2 ай бұрын
There are many available packages, I just wanted to showcase a particular React Native feature that you can use
@marchabib81682 жыл бұрын
Hello ! Amazing vidéo ! I just have one question : You imported "findNodeHandle" but never used it. What is this for ?
@hosamashraf80834 жыл бұрын
Thanks for sharing this. Can I ask why didn't you use the onLayout prop of a View to calculate the view measurements?
@CatalinMironDev4 жыл бұрын
Because I wanted to get the measurements based on the parent container. Thanks ✌️
@hosamashraf80834 жыл бұрын
Catalin Miron onLayout also gives the measurements based on parent view right? Pardon me if I'm wrong.
@CatalinMironDev4 жыл бұрын
@@hosamashraf8083 you are right measureLayout and onLayout give you back the same thing, but onLayout it’s a method that exists in the children and I wanted to have access to children from the parent via ref. Ref is more powerful for this example. Thanks ✌️
@hosamashraf80834 жыл бұрын
@@CatalinMironDev Thanks for the explaining. 🙌
@aqdasilyas27683 жыл бұрын
Amazing video brother ... One thing I want to ask that how can I change different components instead of different images on background ... In this video, when i click specific text it appears image related to that text.... But now I want that when i click on specific text... it shows a component instead of image ... how can i doo that ? please answer me as soon as possible because it helps me in my project
@filouledoux4 жыл бұрын
Great video! Quick question, why not use the new Pressable component?
@CatalinMironDev4 жыл бұрын
Great suggestion, I’ll do it in the next videos. Thanks ✌️
@johnny719top3 жыл бұрын
very good video!!
@__edward3 жыл бұрын
How do I disable the swipe gesture? I want to only scroll on the tab press.
@erkangorgulu60134 жыл бұрын
Thank you very much for the video. I used scrollview for tabs and made it work. However I am trying make the tab scrollview to scroll when I change the screen. Creating a ref for tab scrollview is the way to go or you would have a different approch in mind ? Thanks in advance.
@CatalinMironDev4 жыл бұрын
Creating a ref for tab scrollview and using `scrollToOffset` should do the trick. Thanks Erkan! ✌️
@adarshjaiswal73344 жыл бұрын
was you able to make it work completely making tab scrollable. Would you mind sharing code here.
@codewithponleu3 жыл бұрын
@@CatalinMironDev I followed your recommendation, but the indicator doesn’t play nicely with scroll view.
@andrzejhanusek77494 жыл бұрын
Great stuff!
@CatalinMironDev4 жыл бұрын
Thanks a lot Andrzej ✌️
@razafaltu88553 жыл бұрын
If i have more than 5 options .... it is only 5 options that fit in the screen ... but when i add 10 options in tab ... it does not look great... so how i add more options in tabview
@akashraj49013 жыл бұрын
Can you please tell me how to make the tabs horizontally scrollable?
@sukhvsin24 жыл бұрын
Awsome man!
@CatalinMironDev4 жыл бұрын
Glad you think so! Thanks Sukhvinder! ✌️
@Jitsandcrypto3 жыл бұрын
Beautiful
@isidorsajinovic55734 жыл бұрын
Hey man! Excellent job! I have one bug here. My measurement is done before render and when I start my app indicator never shows up because measurements are always zero (x, y, width and height are zero). When I remove [ ] in useEffect hook it works but it isn't smooth. Do you have any idea how to solve that?
@soumyaranjansahu45192 жыл бұрын
use measures in your dependancy array in useEffect
@samidebayroune34782 жыл бұрын
can we do it with components instead of flatlist ?
@4hiphop1 Жыл бұрын
Man you are top
@animeshsrivastava11593 жыл бұрын
Hi, really like your videos. Is it possible to have a dynamic react component for each tab in place of the image? Meaning different ( varying in tags ) structure for each of the tabs rather than having an image?
@sunnymittal19062 жыл бұрын
The only thing governing the dimensions of the component (currently an image) is the outer ...you can put anything inside it
@mehdiamiri54182 жыл бұрын
hey Catalin thank you for your great video but i have a problem.indicator behaves so bad when tab items increases. you used .map for rendering tab titles but i changed it to flatlist because i have 8 tab titles. after that when i swipe to other tab , indicator position completely treats wrong
@newtonsazzad748 Жыл бұрын
where did you use the findNodeHandle?
@tahashaikh17332 жыл бұрын
how do you scroll these tabs for active slide if it is more thn 5 ?
@Eddysapata4 жыл бұрын
I asked it already but have not replied, which color scheme and theme you are using it looks lovely. ❤❤. I know font is operator
@CatalinMironDev4 жыл бұрын
Hi Eddy, the VSCode theme is called Palenight and font yes its Operator Mono
@Eddysapata4 жыл бұрын
@@CatalinMironDev oh thanks that was quick.. ❤. Love from India.. ❤
@vigneshwaraneswaramoorthi41173 жыл бұрын
Any performance issue will happen, when I create ref for each array item?
@BehindTheIssues3 жыл бұрын
Hi Catalin, grate job, please make tabs scrollable
@carlosandresafanadorcabal28012 жыл бұрын
this is gold
@priyashah16933 жыл бұрын
Hey , Firstly u r videos are awesome. Currently I was doing this example but I was not load array 'M' and useEffect is also not getting called.I'm talking about 15:15 Tabs useEffect. If you can help, that will be great.
@shafqatullah66663 жыл бұрын
same here.. cant u help me if u found any solution?
@sidilain55333 жыл бұрын
Can you done this with react Viewpager? that component only exposes onPageScroll property, instead onScroll, greetings from México.
@feritejakusuma84504 жыл бұрын
Thanks for the amazing tutorial. i'm new in .JS and i learned a lot from your video, and i wanna ask, at 21:12 . what is ( ref?.current?.scrollToOffset({....}) ) mean ? , why there is question mark there ?
@CatalinMironDev4 жыл бұрын
Hi Feri, great question and sorry for missing this out in my explanation. The question mark it’s called optional chaining (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining) and is checking if the left hand side exists otherwise returns undefined. Eg: if(obj && obj.key && obj.key.subKey) Can be translated to obj?.key?.subKey Thanks and I hope that this was helpful. ✌️