React DOM-এর জন্য গতি · React Native-এর Animated API
গতি একবার লিখুন। মসৃণ চলে, কখনো ভাঙে না।
Animated, React Native-এর Animated-কে ওয়েবে আনে। একটি মান প্রতি ফ্রেমে React রেন্ডার ছাড়াই যত খুশি এলিমেন্ট চালায়, সমর্থিত গতি ব্রাউজার নিজেই চালায়, আর প্রতিটি বাধা স্ক্রিনে যা আছে সেখান থেকে এগোয়।
npm install @kkwaenggwari/animatedএকটি ঘড়ির মান ৬৪টি আকৃতির ঢেউ চালায়। মঞ্চের ওপর পয়েন্টার নাড়ান।
এই বিল্ডে মাপা
ডেস্কটপ PC-তে হেডলেস Chrome-এ 1.0.0 বিল্ড দিয়ে মাপা। সংখ্যা ডিভাইসের ওপর নির্ভর করে। আমরা কীভাবে মেপেছি
- 0.00ms৪০০টি এলিমেন্ট নড়ার সময় প্রতি ফ্রেমের JavaScript
Animated এলিমেন্টে transform আর opacity-র সীমিত গতি ব্রাউজার চালায়। পাতার নিজস্ব ফ্রেম callback কোনো কাজ করে না।
- 0.13msএকটি মান ১০,০০০ এলিমেন্ট চালালে প্রতি ফ্রেমের JavaScript
মান একটি CSS ভেরিয়েবল লেখে; প্রতিটি এলিমেন্ট CSS-এ তা থেকে নিজের স্টাইল তৈরি করে।
- 0গতির সময় React রেন্ডার
মান কখনো React স্টেটের মধ্য দিয়ে যায় না। আপনার props বদলালে কম্পোনেন্ট রেন্ডার হয়, ফ্রেম বদলালে নয়।
01 · সহজ
যে API আপনি আগেই জানেন, সাধারণ React style-এ
timing, spring, interpolate, loop আর Animated.event React Native-এর নাম আর কনফিগারেশন বজায় রাখে। মান সরাসরি সাধারণ style prop-এ যায়, তাই প্রথম গতির আগে কোনো বিশেষ কম্পোনেন্ট শিখতে হয় না।
Animated.View-কেAnimated.divনাম দিয়ে React Native-এর কোড নিয়ে আসুন।- একটি মান একসঙ্গে একটি ফিতা, একটি ডায়াল আর এক সারি কার্ড চালাতে পারে, প্রতিটি নিজের পরিসরে।
useAnimatedরেসিপির মালিক: মাউন্টে শুরু হয়, নির্ভরতা বদলালে আবার শুরু হয় আর আনমাউন্টে পরিষ্কার করে।
উদাহরণ প্রস্তুত হচ্ছে…
React Native-এর মতোই কল
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />
// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />
const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });
Animated.loop(
Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();02 · দ্রুত
প্রতি ফ্রেমে React রেন্ডার নেই
হুকের মান একটি CSS ভেরিয়েবল। রৈখিক ইন্টারপোলেশন আর গাণিতিক কাজ সেই ভেরিয়েবলের নিখুঁত calc() এক্সপ্রেশন হয়ে যায়, তাই প্রতিটি ফ্রেম একটি লেখা আর বাকিটা ব্রাউজার হিসাব করে। Animated.<tag> এলিমেন্টে transform আর opacity-র সীমিত গতি ব্রাউজার ফ্রেম callback ছাড়াই চালায়।
- বিন্দুর সংখ্যা বদলান: কাউন্টার দেখায় React প্রতিটি পরিবর্তনে একবার রেন্ডার হয়েছে, কখনো প্রতি ফ্রেমে নয়।
scopeমান প্রতিটি এলিমেন্টের বদলে কন্টেইনারে একবার লেখে।inspect(element)জানায় প্রতিটি প্রপার্টি কোন পথ ব্যবহার করে আর কেন।
উদাহরণ প্রস্তুত হচ্ছে…
03 · স্থিতিশীল
যেকোনো জায়গায় থামান। এটি এগিয়ে চলে।
নতুন লক্ষ্য শুরু হয় স্ক্রিনে এলিমেন্ট যেখানে আছে সেখান থেকে, আর স্প্রিং বেগও ধরে রাখে, তাই মাঝপথের মোড় আগে থামার বদলে মসৃণভাবে বাঁক নেয়। হুকে ঘোষিত কন্ট্রোলার প্রতিস্থাপন আর আনমাউন্টে থেমে ছেড়ে দেওয়া হয়, আর সার্ভারে রেন্ডার হওয়া markup হাইড্রেশনের পরেও অ্যানিমেট হতে থাকে।
- দ্রুত দুবার ক্লিক করুন:
spring-এ পথ বাঁকে,timing-এ অবস্থান থাকে কিন্তু নতুন বক্ররেখা শুরু হয়। - থামালে মান যেখানে আছে সেখানেই থাকে; কিছুই শেষ অবস্থায় লাফ দেয় না।
- আনমাউন্ট, রুট বদল বা লুকানো ট্যাবের পরে কোনো ভুলে যাওয়া ফ্রেম লুপ থাকে না।
উদাহরণ প্রস্তুত হচ্ছে…
- চুম্বক ডকপয়েন্টার পার হলে আইকন বড় হয়, পাশেরগুলোকে সরিয়ে দেয়, আর চলে গেলে স্থির হয়।
moveInputfollowuseAnimatedCSSmultiply - সোয়াইপ ডেকওপরের কার্ড টানুন। সীমা পেরোলে উড়ে যায়; নাহলে স্প্রিং দিয়ে ফিরে আসে।
dragInputuseAnimatedListenerAnimated.div - ভাগ করা গ্যালারিএকটি টাইল বড় হয়ে বিস্তারিত দৃশ্য হয় আর ছোট হয়ে গ্রিডে ফেরে।
Animated.SceneAnimated.Keepmove
Animated দিয়ে তৈরি
তৈরি কম্পোনেন্ট দরকার? Animated Chorus।
ঘুরন্ত সংখ্যা, সরে যাওয়া কার্ড হাইলাইট, অগ্রগতি, শিট আর অ্যানিমেটেড তালিকা, যা সরাসরি React আর React Native-এ বসে যায়। এই তিনটি এখনই এই পাতায় চলছে।
Animated Chorus দেখুনতিন মিনিটে শুরু করুন
প্যাকেজ ইনস্টল করুন, প্রথম মান নাড়ান, তারপর সামনের কাজের গাইড বেছে নিন।
npm install @kkwaenggwari/animated