আমি প্রতিক্রিয়াতে একটি উপাদান তৈরি করেছি যা প্যারালাক্স প্রভাব তৈরি করতে উইন্ডো স্ক্রোলটিতে তার নিজস্ব স্টাইল আপডেট করার কথা।
উপাদান renderপদ্ধতিটি এর মতো দেখাচ্ছে:
function() {
let style = { transform: 'translateY(0px)' };
window.addEventListener('scroll', (event) => {
let scrollTop = event.srcElement.body.scrollTop,
itemTranslate = Math.min(0, scrollTop/3 - 60);
style.transform = 'translateY(' + itemTranslate + 'px)');
});
return (
<div style={style}></div>
);
}
এটি কাজ করে না কারণ প্রতিক্রিয়াটি জানে না যে উপাদানটি পরিবর্তিত হয়েছে, এবং সেইজন্য উপাদানটি পুনরায় সরবরাহ করা হয়নি।
আমি itemTranslateউপাদানটির স্থিতির মানটি সংরক্ষণ করার চেষ্টা করেছি এবং setStateস্ক্রোল কলব্যাকে কল করছি । যাইহোক, এটি স্ক্রোলিংটিকে ব্যবহারযোগ্য করে তুলছে না কারণ এটি মারাত্মকভাবে ধীর।
এটি কিভাবে করবেন সে সম্পর্কে কোনও পরামর্শ?
renderএকই থ্রেড থেকে আপনি যে কোনও কাস্টম পদ্ধতি কল করেন ) কেবলমাত্র রিঅ্যাক্টে আসল ডিওএম রেন্ডারিং / আপডেট করার ক্ষেত্রে যুক্তিযুক্ত হতে হবে। পরিবর্তে, নীচে @ অস্টিনগ্রেকোর দেখানো অনুসারে, আপনার ইভেন্ট বন্ডিং তৈরি এবং মুছে ফেলার জন্য আপনার প্রদত্ত প্রতিক্রিয়া জীবনচক্র পদ্ধতিগুলি ব্যবহার করা উচিত। এটি এটি উপাদানটির অভ্যন্তরে স্ব-অন্তর্ভুক্ত করে এবং ইভেন্ট বন্ডিং সরিয়ে ফেলা নিশ্চিত করে / যদি কখন যে উপাদানটি ব্যবহার করে এমন উপাদানটি আনমাউন্ট হয় তা নিশ্চিত করে কোনও ফাঁস নিশ্চিত করে।