নিয়ন্ত্রিত উপাদান এবং অনিয়ন্ত্রিত উপাদানগুলি কী কী?


107

রিঅ্যাক্টজেএস-এ নিয়ন্ত্রিত উপাদান এবং অনিয়ন্ত্রিত উপাদানগুলি কী কী? তারা একে অপরের থেকে কীভাবে আলাদা?


22
পুনরায় খোলার জন্য মনোনীত। এটি আসলে একটি মোটামুটি নির্ভুল প্রশ্ন। কীভাবে এটিকে খুব বিস্তৃত হিসাবে বিবেচনা করা যায় তা নিশ্চিত নয় Not
চার্লি ফুল 20

উত্তর:


134

এটি রাষ্ট্রীয় ডিওএম উপাদানগুলির সাথে সম্পর্কিত (ফর্ম উপাদানগুলি) এবং প্রতিক্রিয়াযুক্ত ডক্স পার্থক্যটি ব্যাখ্যা করে:

  • একটি নিয়ন্ত্রিত উপাদান হ'ল যা তার বর্তমান মানটি গ্রহণ করে propsএবং কলব্যাকের মাধ্যমে পরিবর্তনগুলি সূচিত করে onChange। কোনও পিতা বা মাতা উপাদান কলব্যাক পরিচালনা করে এবং তার নিজস্ব রাজ্য পরিচালনা করে এবং নিয়ন্ত্রিত উপাদানটিতে প্রপস হিসাবে নতুন মানগুলি পাস করে এটি "নিয়ন্ত্রণ" করে। আপনি এটিকে "বোবা উপাদান "ও বলতে পারেন।
  • একটি অনিয়ন্ত্রিত অংশটি হ'ল যা অভ্যন্তরীণভাবে তার নিজস্ব রাজ্য সঞ্চয় করে এবং আপনি refযখন প্রয়োজন তখন ডমকে তার বর্তমান মানটি খুঁজে পেতে জিজ্ঞাসা করেন । এটি কিছুটা বেশি গতানুগতিক HTML এর মতো।

বেশিরভাগ নেটিভ রিঅ্যাক্ট ফর্ম উপাদানগুলি নিয়ন্ত্রিত এবং অনিয়ন্ত্রিত উভয় ব্যবহারকে সমর্থন করে:

// Controlled:
<input type="text" value={value} onChange={handleChange} />

// Uncontrolled:
<input type="text" defaultValue="foo" ref={inputRef} />
// Use `inputRef.current.value` to read the current value of <input>

বেশিরভাগ (বা সমস্ত) ক্ষেত্রে আপনার নিয়ন্ত্রিত উপাদানগুলি ব্যবহার করা উচিত


4
মানটি কি stateতার চেয়ে বেশি নেওয়া হয় না props?
ইভানকা টডোরোভা

9
@ ইভানকাটোডোরোভা একটি নিয়ন্ত্রিত উপাদানগুলির জন্য মানটি মধ্য দিয়ে যায় props। একটি অনিয়ন্ত্রিত উপাদান stateঅভ্যন্তরীণভাবে মানটি নিজেই নিয়ন্ত্রণ করতে ব্যবহার করবে । এটিই মূল পার্থক্য।
অ্যারন বেল

4
তাদের মধ্যে পার্থক্য হ'ল যে উপাদানগুলি তাদের মান সেট / পাস এবং কলব্যাক থাকে তাদের controlled components( <input type="text" value="value" onChange={handleChangeCallbackFn} />) বনাম .তিহ্যবাহী এইচটিএমএল বলা হয় যেখানে কোনও ইনপুট উপাদান তাদের নিজস্ব মান হ্যান্ডেল করে এবং ( ) refsনামক মাধ্যমে পড়া যায় । নিয়ন্ত্রিত উপাদানগুলি তাদের নিজস্ব রাষ্ট্র পরিচালনা করে বা তাদের প্যারেন্ট উপাদান থেকে প্রপস হিসাবে পেয়ে থাকে। uncontrolled components<value type="text" />setState
লিওর এলরম

defaultValueপ্রপসের মাধ্যমে এটি পাওয়া এমন কোনও উপাদানকে আপনি কীভাবে কল করবেন , তবে যা নিয়ামককে জানিয়ে দেয় onBlur?
পল রাজাওয়ান বার্গ

@ পলরজভানবার্গ যেটি একটি বিরোধী-প্যাটার্নের মতো বলে মনে হচ্ছে, একক স্থানে রাষ্ট্র নিয়ন্ত্রণ করা উচিত । সাধারণত আপনি রাষ্ট্রকে নিকটতম সাধারণ পূর্বপুরুষের দিকে তুলবেন।
অ্যারন বেল

1
  • নিয়ন্ত্রিত উপাদানগুলি কলব্যাকগুলি ব্যবহার করে পরিবর্তনগুলি সম্পর্কে অন্যান্য উপাদানগুলিকে অবহিত করে। উদাহরণস্বরূপ: <Button onClick={() => console.log("clicked")}>Click</Button>
  • অনিয়ন্ত্রিত উপাদানগুলি অন্যান্য উপাদানগুলিকে তাদের পরিবর্তনগুলি সম্পর্কে অবহিত করে এবং আপনি কেবলমাত্র রেফ-এস ব্যবহার করে উপাদান অ্যাক্সেস করতে পারেন। আপনার যদি HTML উপাদানের আসল ডোম অ্যাক্সেস করতে হয় তবে রেফটি কার্যকর হতে পারে

1

নিয়ন্ত্রিত উপাদানটি এমন উপাদান যা কলব্যাক ফাংশন থেকে পরিবর্তিত মান পায় এবং অনিয়ন্ত্রিত উপাদানটি এমন উপাদান যা ডিওএম থেকে থাকে। উদাহরণস্বরূপ, যখন ইনপুট মান পরিবর্তন করা হয়, আমরা নিয়ন্ত্রিত উপাদানগুলিতে onChange ফাংশনটি ব্যবহার করতে পারি এবং আমরা রেফের মতো DOM ব্যবহার করে মানটি পেতে পারি।

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