@ jpdelatorre এর উত্তর সাধারণ কারণগুলিকে একটি প্রতিক্রিয়া উপাদান পুনরায় রেন্ডার করতে পারে তা হাইলাইট করার ক্ষেত্রে দুর্দান্ত।
আমি কেবল একটি উদাহরণের মধ্যে আরও গভীর ডুব দিতে চেয়েছিলাম: যখন প্রপস পরিবর্তন হয় । রিঅ্যাক্ট উপাদানকে পুনরায় রেন্ডার করতে সমস্যাজনিত সমস্যা সমাধান করা একটি সাধারণ সমস্যা এবং আমার অভিজ্ঞতায় অনেক সময় এই সমস্যাটি অনুসন্ধান করার সময় কোন প্রস পরিবর্তন হচ্ছে তা নির্ধারণের সাথে জড়িত ।
উপাদানগুলি পুনরায় রেন্ডার করুন প্রতিক্রিয়া করুন যখনই তারা নতুন প্রপস পান। তারা যেমন নতুন প্রসেস গ্রহণ করতে পারে:
<MyComponent prop1={currentPosition} prop2={myVariable} />
বা যদি MyComponent
কোনও রিডুক্স স্টোরের সাথে সংযুক্ত থাকে :
function mapStateToProps (state) {
return {
prop3: state.data.get('savedName'),
prop4: state.data.get('userCount')
}
}
যে কোনো সময় এর মান prop1
, prop2
, prop3
, অথবা prop4
পরিবর্তন MyComponent
পুনরায় প্রতিদান দেবেন। 4 টি প্রপসের সাহায্যে এটি শুরু করা খুব কঠিন নয় যে প্রপসটি console.log(this.props)
সেই শুরুতে একটি স্থাপন করে কোন প্রপসগুলি পরিবর্তন হচ্ছেrender
ব্লকের । তবে আরও জটিল উপাদান এবং আরও বেশি প্রপস সহ এই পদ্ধতিটি অযোগ্য।
কোন প্রোপ পরিবর্তনগুলি কোনও উপাদানকে পুনরায় রেন্ডার করিয়ে দিচ্ছে তা নির্ধারণ করতে এখানে একটি দরকারী পদ্ধতির ( সুবিধার জন্য লোড্যাশ ব্যবহার করে ):
componentWillReceiveProps (nextProps) {
const changedProps = _.reduce(this.props, function (result, value, key) {
return _.isEqual(value, nextProps[key])
? result
: result.concat(key)
}, [])
console.log('changedProps: ', changedProps)
}
আপনার উপাদানটিতে এই স্নিপেট যুক্ত করা পুনরায় রেন্ডারকারীদের উদ্বেগজনিত অপরাধীকে প্রকাশ করতে সহায়তা করতে পারে এবং অনেক সময় এটি অপ্রয়োজনীয় ডেটা উপাদানগুলিতে নষ্ট করার বিষয়ে আলোকপাত করতে সহায়তা করে।
shouldComponentUpdate
স্বয়ংক্রিয় উপাদান আপডেট অক্ষম করতে এবং তারপরে সেখান থেকে আপনার ট্রেস শুরু করতে পারেন। আরও তথ্য এখানে পাওয়া যাবে: facebook.github.io/react/docs/optimizing-performance.html