এমন একটি ধারক থাকতে হবে যা গতিশীলভাবে ব্যবহার করার কথা বলে এমন সমস্ত উপাদানগুলিতে উপাদানগুলির নাম ম্যাপ করে। কম্পোনেন্ট ক্লাসগুলি একটি ধারকটিতে নিবন্ধিত হওয়া উচিত কারণ মডুলার পরিবেশে অন্যথায় তাদের অ্যাক্সেসের একক জায়গা নেই। উপাদান শ্রেণিগুলি তাদের নামগুলি স্পষ্টভাবে উল্লেখ না করে তাদের নামগুলি দ্বারা চিহ্নিত করা যায় না কারণ ফাংশনটি name
উত্পাদনে ক্ষুদ্র হয়।
উপাদান মানচিত্র
এটি সরল বস্তু হতে পারে:
class Foo extends React.Component { ... }
...
const componentsMap = { Foo, Bar };
...
const componentName = 'Fo' + 'o';
const DynamicComponent = componentsMap[componentName];
<DynamicComponent/>;
বা Map
উদাহরণ:
const componentsMap = new Map([[Foo, Foo], [Bar, Bar]]);
...
const DynamicComponent = componentsMap.get(componentName);
প্লেইন অবজেক্ট আরও উপযুক্ত কারণ এটি সম্পত্তি শর্টহ্যান্ড থেকে উপকৃত হয়।
ব্যারেল মডিউল
একটি পিপা মডিউল নামে রপ্তানির সঙ্গে যেমন মানচিত্র হিসাবে কাজ করতে পারেন:
// Foo.js
export class Foo extends React.Component { ... }
// dynamic-components.js
export * from './Foo';
export * from './Bar';
// some module that uses dynamic component
import * as componentsMap from './dynamic-components';
const componentName = 'Fo' + 'o';
const DynamicComponent = componentsMap[componentName];
<DynamicComponent/>;
এটি মডিউল কোড স্টাইল প্রতি এক শ্রেণির সাথে ভাল কাজ করে।
প্রসাধক
সিনট্যাকটিক চিনির জন্য শ্রেণি উপাদানগুলির সাথে সজ্জা ব্যবহারকারীদের ব্যবহার করা যেতে পারে, এটি এখনও শ্রেণীর নামগুলি স্পষ্টভাবে নির্দিষ্ট করে মানচিত্রে নিবন্ধিত করতে হবে:
const componentsMap = {};
function dynamic(Component) {
if (!Component.displayName)
throw new Error('no name');
componentsMap[Component.displayName] = Component;
return Component;
}
...
@dynamic
class Foo extends React.Component {
static displayName = 'Foo'
...
}
একটি সাজসজ্জারকে কার্যক্ষম উপাদানগুলির সাথে উচ্চ-অর্ডার উপাদান হিসাবে ব্যবহার করা যেতে পারে:
const Bar = props => ...;
Bar.displayName = 'Bar';
export default dynamic(Bar);
ব্যবহারের অ-মানকdisplayName
পরিবর্তে র্যান্ডম সম্পত্তি এছাড়াও ডিবাগ সুবিধা।
{...this.props}
পাঠকরাও পিতামাতার কাছ থেকে সাব টাইপযুক্ত উপাদানগুলিতে স্বচ্ছভাবে প্রপসগুলি সরবরাহ করতে দরকারী বলে মনে করবেন। লাইকreturn <MyComponent {...this.props} />