আপনি ব্যবহার করতে পারেন React.cloneElement
, আপনার অ্যাপ্লিকেশনটিতে এটি ব্যবহার শুরু করার আগে এটি কীভাবে কাজ করে তা আরও ভাল। এটি চালু করা হয়েছে React v0.13
, আরও তথ্যের জন্য পড়ুন, তাই আপনার জন্য এই কাজের পাশাপাশি কিছু:
<div>{React.cloneElement(this.props.children, {...this.props})}</div>
এটি কীভাবে কাজ করছে এবং কীভাবে আপনি সেগুলি ব্যবহার করতে পারেন তা বোঝার জন্য আপনার জন্য প্রতিক্রিয়ার ডকুমেন্টেশন থেকে লাইনগুলি আনুন:
প্রতিক্রিয়া v0.13 আরসি 2 এ আমরা এই স্বাক্ষর সহ React.addons.cloneWithProp এর অনুরূপ একটি নতুন এপিআই প্রবর্তন করব:
React.cloneElement(element, props, ...children);
ক্লোনওথপথগুলির বিপরীতে, এই নতুন ফাংশনটিতে কোনও যাদু অন্তর্নির্মিত আচরণ নেই শৈলী এবং শ্রেণিকামের জন্য মার্জ করার জন্য একই কারণে আমাদের কাছে ট্রান্সফারপ্রোসটো থেকে সেই বৈশিষ্ট্য নেই। ম্যাজিক জিনিসের সম্পূর্ণ তালিকা আসলে কী, তা কেউ নিশ্চিত নয়, যা শৈলীর আলাদা স্বাক্ষর রয়েছে (যেমন আসন্ন প্রতিক্রিয়াশীল নেটিভ) তে যখন কোডটির বিষয়ে যুক্তি দেখাতে অসুবিধা এবং পুনরায় ব্যবহার করা কঠিন করে তোলে।
React.cloneElement প্রায় সমতুল্য:
<element.type {...element.props} {...props}>{children}</element.type>
তবে, জেএসএক্স এবং ক্লোনওয়াইথপ্রপসের বিপরীতে এটি রেফগুলি সংরক্ষণ করে। এর অর্থ হ'ল আপনি যদি কোনও সন্তানের সাথে এটির উপর নির্ভর করে পান তবে আপনি দুর্ঘটনাক্রমে আপনার পূর্বপুরুষের কাছ থেকে এটি চুরি করবেন না। আপনি আপনার নতুন উপাদানের সাথে একই রেফ সংযুক্ত পাবেন।
একটি সাধারণ প্যাটার্ন হ'ল আপনার বাচ্চাদের উপরে মানচিত্র তৈরি করা এবং একটি নতুন প্রপ যোগ করা। ক্লোনওয়েথপ্রপসগুলি রেফ হারিয়েছে এমন বিষয়ে অনেকগুলি প্রতিবেদন করা হয়েছে, এটি আপনার কোড সম্পর্কে যুক্তিযুক্ত হতে শক্ত করে তোলে। এখন ক্লোন এলিমেন্ট সহ একই ধাঁচ অনুসরণ করা প্রত্যাশা অনুযায়ী কাজ করবে। উদাহরণ স্বরূপ:
var newChildren = React.Children.map(this.props.children, function(child) {
return React.cloneElement(child, { foo: true })
});
দ্রষ্টব্য: React.cloneElement (শিশু, {রেফ: 'newRef'}) রেফটিকে ওভাররাইড করে তোলে তাই যদি আপনি কলব্যাক-রেফ ব্যবহার না করেন তবে দুটি পিতা-মাতার পক্ষে একই সন্তানের রেফ দেওয়া সম্ভব নয়।
প্রসগুলি এখন অপরিবর্তনীয় হওয়ায় এটি 0.13 প্রতিক্রিয়াতে প্রবেশ করার জন্য একটি সমালোচনামূলক বৈশিষ্ট্য ছিল। আপগ্রেডের পথটি প্রায়শই উপাদানটির ক্লোন করতে হয় তবে এটি করে আপনি রেফটি হারাতে পারেন। অতএব, আমাদের এখানে একটি ভাল আপগ্রেড পথ প্রয়োজন। আমরা যখন ফেসবুকে কলসাইটগুলি আপগ্রেড করছিলাম তখন আমরা বুঝতে পারি যে আমাদের এই পদ্ধতির দরকার। আমরা সম্প্রদায় থেকে একই প্রতিক্রিয়া পেয়েছি। অতএব আমরা চূড়ান্ত রিলিজের আগে অন্য আরসি করার সিদ্ধান্ত নিয়েছি যাতে এটি নিশ্চিত হয়ে যায়।
আমরা অবশেষে রিঅ্যাক্ট.এডডনস.ক্লোনওথপ্রপগুলি হ্রাস করার পরিকল্পনা করি plan আমরা এটি এখনও করছি না, তবে এটি আপনার নিজের ব্যবহার সম্পর্কে চিন্তাভাবনা শুরু করার পরিবর্তে React.cloneElement ব্যবহার করার বিষয়ে বিবেচনা করার একটি ভাল সুযোগ। আমরা বাস্তবে এটি অপসারণের আগে অবচয় বিজ্ঞপ্তিগুলি সহ একটি রিলিজ প্রেরণ নিশ্চিত করব যাতে তাত্ক্ষণিক কোনও পদক্ষেপের প্রয়োজন হয় না।
আরও এখানে ...