প্রতিক্রিয়া 16 এ ক্লাস বনাম শ্রেণীর নাম


84

আমি দেখেছি যে প্রতিক্রিয়া 16 টি ডিওএম এর মাধ্যমে অ্যাট্রিবিউটগুলি সরবরাহ করার অনুমতি দেয়। তো, তার মানে ক্লাসের পরিবর্তে 'ক্লাস' ব্যবহার করা যায়, তাই না?

আমি কেবল ভাবছি যে প্রতিক্রিয়াটির পূর্ববর্তী সংস্করণগুলির সাথে পিছনের দিকের সাথে সামঞ্জস্য থাকা ছাড়াও ক্লাসের উপরে ক্লাসনেম ব্যবহারের আরও সুবিধা আছে কিনা।


ClassName একমাত্র সমর্থিত বৈশিষ্ট্য, তবে v16 এ "একটি ভিন্ন ভিন্ন ক্যানোনিকাল প্রতিক্রিয়া নাম সহ জ্ঞাত বৈশিষ্ট্য" এর জন্য একটি পরিবর্তন ঘটে। ভি 15 এ প্রতিক্রিয়া সতর্ক করে এবং তাদের উপেক্ষা করে, ভি 16 এ এটি সতর্ক করে তবে মানগুলিকে স্ট্রিংয়ে রূপান্তর করে এবং তাদের মধ্য দিয়ে যায়। ডকুমেন্টেশন আপনার প্রশ্নের একটি পরিষ্কার উত্তর দেয়: "সর্বদা সমর্থিত সমস্ত বৈশিষ্ট্যের জন্য ক্যানোনিকাল রিঅ্যাক্ট নামকরণ ব্যবহার করুন"। Reactjs.org/blog/2017/09/08/…
Lifeisfoo

উত্তর:


107

classজাভাস্ক্রিপ্টের একটি কীওয়ার্ড এবং জেএসএক্স জাভাস্ক্রিপ্টের একটি এক্সটেনশন। প্রতিক্রিয়ার classNameপরিবর্তে এর ব্যবহারের মূল কারণ class

এক্ষেত্রে কিছুই বদল হয়নি।

এটি আরও কিছুটা প্রসারিত করতে। একটি কীওয়ার্ডের অর্থ একটি ভাষার বাক্য গঠনের একটি টোকনের একটি বিশেষ অর্থ রয়েছে। উদাহরণস্বরূপ:

class MyClass extends React.Class {

টোকেন classনির্দেশ করে যে পরবর্তী টোকেনটি একটি শনাক্তকারী এবং তারপরে একটি শ্রেণীর ঘোষণা। দেখুন জাভাস্ক্রিপ্ট কীওয়ার্ড + + সংরক্ষিত শব্দ

একটি টোকেন একটি কীওয়ার্ডের অর্থ এই যে আমরা এটি কিছু অভিব্যক্তিতে ব্যবহার করতে পারি না, যেমন

// invalid in older versions on Javascript, valid in modern javascript
const props = {
  class: 'css class'
}

// valid in all versions of Javascript
const props = {
 'class': 'css class'
};

// invalid!
var class = 'css';

// valid
var clazz = 'css';

// invalid!
props.class = 'css';

// valid
props['class'] = 'css';

সমস্যাগুলির মধ্যে একটি হ'ল ভবিষ্যতে অন্য কোনও সমস্যা উত্থাপিত হবে কিনা তা কেউ জানতে পারে না। প্রতিটি প্রোগ্রামিং ভাষা এখনও বিকশিত হয় এবং classবাস্তবে কিছু নতুন বিরোধী বাক্য গঠনতে ব্যবহৃত হতে পারে।

এর সাথে এ জাতীয় কোনও সমস্যা নেই className


হাই, সুলতান আপনি দয়া করে আপনার উত্তরটি আরও কিছুটা ব্যাখ্যা করতে পারেন? জাভাস্ক্রিপ্টে কীওয়ার্ড হওয়া শ্রেণি কেন শ্রেণি নামটিকে পছন্দের অনুশীলন করে?
ডেভিড এ ফ্রেঞ্চ

4
@ ডেভিডএ.ফ্রিঞ্চ প্রসারিত উত্তর। অন্যান্য উত্তরগুলি দেখুন।
সুলতান

4
আপনাকে অনেক ধন্যবাদ সুলতান! এটা খুব সহায়ক ছিল।
ডেভিড এ ফরাসী

4
props.class = 'css' এটি সম্পূর্ণরূপে বৈধ
দাও

31

প্রতিক্রিয়া দলটি আসন্ন ভবিষ্যতের class পরিবর্তে পরিবর্তিত হতে className চলেছে ( উত্স ):

  • classNameclass( # 4331 , নীচে নীচে # 13525 (মন্তব্য )ও দেখুন। এটি বহুবার প্রস্তাব করা হয়েছে। আমরা ইতিমধ্যে প্রতিক্রিয়া ১ in এর ডোম নোডে শ্রেণি পাস করার অনুমতি দিচ্ছি this এটি যে বিভ্রান্তি সৃষ্টি করছে তা সিনট্যাক্স সীমাবদ্ধতার পক্ষে নয় যা এর বিরুদ্ধে রক্ষা করার চেষ্টা করছে।

কেন স্যুইচিং এবং উভয় সমর্থন না?

যদি আমরা উভয়কে সতর্কতা ছাড়াই সমর্থন করি, তবে সম্প্রদায়টি কোনটি ব্যবহার করবে তা নিয়ে বিভক্ত হবে। এনপিএমের প্রতিটি উপাদান যা ক্লাসের প্রস্তাব গ্রহণ করে তাদের উভয়কেই ফরোয়ার্ড করতে হবে। মাঝখানে এমনকি এক উপাদান বরাবর খেলা না হয়, তাহলে এবং কার্যকরী শুধুমাত্র একটি ঠেকনা, বর্গ হারিয়ে পরার - অথবা আপনার সাথে শেষ পর্যন্ত ঝুঁকি classএবং classNameনীচে একে অপরের সঙ্গে "দ্বিমত পোষণ" এ, কোন পথ সঙ্গে যে বিরোধ সমাধান প্রতিক্রিয়া জানিয়েছে। সুতরাং আমরা মনে করি এটি স্থিতাবস্থার চেয়েও খারাপ হবে এবং এটি এড়াতে চাই।

সুতরাং আপনার সাথে যোগাযোগ করা উচিত।
আমি classNameততক্ষণ ব্যবহার করব যতক্ষণ না এটি এপিআই আশা করে।


4
এটি আর কেস হিসাবে দেখা যায় না। দেখুন (শেষ): github.com/facebook/react/pull/10169
machineghost

4
@ মাচাইনঘোস্ট # 13525 (রূপান্তর করুন) আগস্ট 31, 2018 এ খোলা হয়েছিল the অন্যদিকে, # 10169 অগস্ট 4, 2017-এ বন্ধ ছিল So সুতরাং আমি মনে করি এটি এখনও প্রাসঙ্গিক।
মওর রেফেলি

4
এটি প্রাসঙ্গিক নয়। তারা বুঝতে পেরেছিল যে classঅনেকগুলি অভিব্যক্তিতে এটি ব্যবহার করা যায় না কারণ এটি একটি কীওয়ার্ড।
সুলতান

16

ইতিমধ্যে দেওয়া অন্যান্য ভাল উত্তরের উপরে কেবল আরও কিছুটা আলোকপাত করতে হবে:

আপনি লক্ষ্য করবেন যে প্রতিক্রিয়াটি গতানুগতিক ডিওএম ক্লাসের পরিবর্তে ক্লাসের নাম ব্যবহার করে। দস্তাবেজগুলি থেকে, "যেহেতু জেএসএক্সটি জাভাস্ক্রিপ্ট, তাই শ্রেণীর মতো শনাক্তকারী এবং এক্সএমএল বৈশিষ্ট্য নাম হিসাবে নিরুৎসাহিত করা হয়েছে Instead

http://buildwithreact.com/tutorial/jsx

এছাড়াও, জেডপাওকে উদ্ধৃত করতে (একটি প্রতিক্রিয়া প্রদানকারী / ফেসবুক কর্মচারী)

আমাদের ডোম উপাদানগুলি (বেশিরভাগ ক্ষেত্রে) জেএস এপিআই ব্যবহার করে তাই আমরা জেএস বৈশিষ্ট্যগুলি (নোড.ক্লাসনাম, নোডক্লাস নয়) ব্যবহার করতে পছন্দ করেছি।


8

প্রতিক্রিয়াযুক্ত ডকগুলি cannonical React attributeপ্রচলিত জাভাস্ক্রিপ্ট নামকরণের পরিবর্তে নামগুলি ব্যবহার করার পরামর্শ দেয় , সুতরাং এমনকি প্রতিক্রিয়াগুলি DOM এ অ্যাট্রিবিউটগুলি অতিক্রম করার অনুমতি দেয় এমনকি এটি আপনাকে একটি সতর্কতা দেয়।

ডক্স থেকে :

Known attributes with a different canonical React name:

    <div tabindex="-1" />
    <div class="hi" />

React 15: Warns and ignores them.
React 16: Warns but converts values to strings and passes them through.
Note: always use the canonical React naming for all supported attributes.

4
যদিও এটি এই সুপারিশটি করে?
ডেভিড এ ফ্রেঞ্চ

5

জুন ২০১৮ অনুসারে, ক্লাসের নাম ক্লাসে পরিবর্তনের প্রক্রিয়া বন্ধ হয়ে গেছে, এটি পরে চালিয়ে যেতে পারে

এখানে ফেসবুক দেবের পোস্টটি কেন তা ব্যাখ্যা করুন

https://github.com/facebook/react/issues/13525


3

রিঅ্যাক্টজেএস-এ ক্লাস বনাম ক্লাসের নাম জাভাস্ক্রিপ্টে ফাংশন যতটা থাকে তেমনই রিঅ্যাক্টজেএসে ক্লাস একটি সংরক্ষিত শব্দ বা কীওয়ার্ড। এই কারণেই আমরা ক্লাসটি বোঝাতে "ClassName" শব্দটি ব্যবহার করি।


2

এ সম্পর্কে প্রতিক্রিয়া দলের দ্বারা প্রকৃত কোনও ব্যাখ্যা নেই তবে ES2015 + তে এর প্রবর্তন হওয়ার পরে এটি জাভাস্ক্রিপ্টে সংরক্ষিত মূলশব্দ "শ্রেণি" থেকে আলাদা বলে মনে করা হবে।

এমনকি আপনি উপাদান তৈরি করার সময় উপাদান কনফিগারেশনে "শ্রেণি" ব্যবহার করলেও এটি কোনও সংকলন / রেন্ডারিং ত্রুটি নিক্ষেপ করবে না।


2

রিএ্যাকটিজেএসে, আমরা জেএসএক্সের সাথে ডিল করছি এবং আপনি সবাই জানেন as জেএসএক্স আপনার ক্লাসনামটি ব্যবহার করতে চায় কারণ এটি একটি অন্তর্নিহিত জাভাস্ক্রিপ্ট ডম এপিআই! ক্লাসটি জেএসে সংরক্ষিত কীওয়ার্ড হওয়া প্রাথমিক কারণ নয় যে আমরা ক্লাস এবং তার পরিবর্তে ক্লাসনেম ব্যবহার করছি না। কারণ আমরা সেই ডিওএম এপিআই উল্লেখ করছি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.