প্রতিক্রিয়াতে রাষ্ট্র এবং প্রপসের মধ্যে পার্থক্য কী?


558

আমি প্রতিক্রিয়াটির উপর একটি বহনদৃষ্টি কোর্সটি দেখছিলাম এবং প্রশিক্ষক বলেছিলেন যে প্রপসগুলি পরিবর্তন করা উচিত নয়। আমি এখন প্রপেস বনাম রাজ্যে একটি নিবন্ধ (uberVU / প্রতিক্রিয়া-গাইড) পড়ছি এবং এটি বলছে

উভয় প্রপস এবং রাষ্ট্র পরিবর্তনগুলি একটি রেন্ডার আপডেট আপডেট করে।

পরে নিবন্ধে বলা হয়েছে:

প্রপস (বৈশিষ্ট্যের জন্য সংক্ষিপ্ত) একটি উপাদানগুলির কনফিগারেশন, এর বিকল্পগুলি যদি আপনি পারেন তবে। তারা উপর থেকে প্রাপ্ত এবং অপরিবর্তনীয়।

  • তাই প্রপস পরিবর্তন করতে পারে তবে সেগুলি কি অপরিবর্তনীয়?
  • আপনার প্রপস কখন ব্যবহার করা উচিত এবং কখন আপনার রাজ্য ব্যবহার করা উচিত?
  • যদি আপনার কাছে এমন ডেটা থাকে যা একটি প্রতিক্রিয়া উপাদানটির প্রয়োজন হয়, তবে তা কি প্রতিক্রিয়ার মাধ্যমে বা বিক্রিয়া উপাদানটির মাধ্যমে সেটআপের মাধ্যমে পাস করা উচিত getInitialState?


7
এটি একটি খুব ভাল প্রশ্ন, আসলে, কেউই একটি সহজ উত্তর দেয় বলে মনে হয় না: /
টমাস ডেকাক্স

উত্তর:


670

প্রপস এবং রাষ্ট্র সম্পর্কিত। একটি উপাদানগুলির অবস্থা প্রায়শই একটি শিশু উপাদানগুলির প্রপস হয়ে উঠবে। React.createElement()প্রপসগুলি পিতা-মাতার রেন্ডার পদ্ধতির মধ্যে বা দ্বিতীয় আর্গুমেন্ট হিসাবে বা যদি আপনি জেএসএক্স ব্যবহার করে থাকেন তবে আরও পরিচিত ট্যাগ বৈশিষ্ট্যগুলি শিশুকে প্রেরণ করা হয়।

<MyChild name={this.state.childsName} />

পিতামাতার রাষ্ট্রীয় মান childsNameশিশুর হয়ে যায় this.props.name। সন্তানের দৃষ্টিকোণ থেকে, নাম প্রপঞ্চ পরিবর্তনযোগ্য। যদি এটি পরিবর্তন করার প্রয়োজন হয় তবে পিতামাতার কেবলমাত্র তার অভ্যন্তরীণ অবস্থাটি পরিবর্তন করা উচিত:

this.setState({ childsName: 'New name' });

এবং প্রতিক্রিয়া এটি আপনার জন্য সন্তানের কাছে প্রচার করবে। একটি প্রাকৃতিক ফলো-অন প্রশ্ন হ'ল: যদি সন্তানের নাম প্রপ পরিবর্তন করা দরকার? এটি সাধারণত শিশু ইভেন্ট এবং পিতামাতার কলব্যাকের মাধ্যমে করা হয়। শিশু সম্ভবত একটি ইভেন্ট প্রকাশ করতে পারে, উদাহরণস্বরূপ onNameChanged,। অভিভাবকরা একটি কলব্যাক হ্যান্ডলারটি পাস করার পরে ইভেন্টটিতে সদস্যতা নেবে।

<MyChild name={this.state.childsName} onNameChanged={this.handleName} />

বাচ্চা ইভেন্ট কলব্যাকের জন্য যুক্তি হিসাবে এটির অনুরোধ করা নতুন নামটি কল করে, যেমন, this.props.onNameChanged('New name')পাঠিয়ে দেবে এবং পিতামাতার ইভেন্ট হ্যান্ডলারের নামটি তার অবস্থা আপডেট করার জন্য ব্যবহার করবে।

handleName: function(newName) {
   this.setState({ childsName: newName });
}

2
ধন্যবাদ! সুতরাং আরও কয়েকটি প্রশ্ন: ১. লোকেরা কেন বলছে প্রপস পরিবর্তন করা উচিত নয়? ২. আপনি কোথায় আপনার ডেটা বুটস্ট্র্যাপিং রাখবেন? GetInitialState এর মতো উপাদানটির সূচনাতে, বা আপনি যখন এটি উপাদানটির বাইরে রাখেন এবং ডেটা উপলব্ধ থাকে তখন উপাদানটি রেন্ডার করেন?
skaterdav85

37
1. এটি প্রতিক্রিয়াটির 'কার্যকরী' দিক। সমস্ত ডেটা (প্রায়) নীচের দিকে প্রবাহিত হয়। প্রোপ যেহেতু পিতামাতার মালিকানাধীন তাই কেবল পিতামাতার এটি পরিবর্তন করা উচিত। আদর্শভাবে, শিশুদের রাষ্ট্রহীন হওয়া উচিত। এটি অনুশীলনে সম্ভব নয় (প্রতিক্রিয়া সাইটে ফর্ম ডকুমেন্টেশন দেখুন)। ২. আপনি হয় এটিকে উপরের দিকে খাওয়াতে পারেন, এটি একটি প্রস্তাবিত অনুশীলন, বা আপনি এটি পৃথক বস্তুগুলিতে সঞ্চয় করতে পারেন। একটি জনপ্রিয় পদ্ধতি হ'ল ফ্লাক্স, যা স্টোরস নামে পরিচিত সিঙ্গলটন অবজেক্ট ব্যবহার করে। এটি একটি বৃহত্তর স্থাপত্য বিন্যাসের অংশ। এটি ফেসবুক থেকে উন্মুক্ত এবং প্রতিক্রিয়ার সাথে কাজ করার জন্য ডিজাইন করা হয়েছে।
টড

2
সুতরাং স্টোরগুলি কি ঠিক বড় গ্লোবাল ভেরিয়েবলের মতো?
সুপারউবারডুপার

3
হ্যাঁ, ফ্লাক্স স্টোরগুলি ক্লায়েন্ট সাইড ক্যাশে। সম্প্রতি প্রকাশিত রিলে, ফেসবুক এবং রেডাক্সের মতো অন্যান্য নিদর্শনগুলিও রয়েছে।
টড

6
এটিকে কিছুটা সিদ্ধ করতে: রাজ্যটি এমন উপাদান উপাদান যা ভিতরে থেকে পরিচালিত হয়, প্রপস হ'ল উপাদানগুলির ডেটা যা উপরে থেকে পরিচালিত হয় এবং এতে পাস করা হয়
চিহ্নিত করুন

221

পিতা-মাতার সন্তানের যোগাযোগের জন্য, কেবল প্রপসগুলি পাস করুন।

আপনার নিয়ামক-দর্শনতে আপনার বর্তমান পৃষ্ঠার প্রয়োজনীয় ডেটাগুলি সঞ্চয় করতে রাষ্ট্র ব্যবহার করুন ।

আপনার সন্তানের উপাদানগুলিতে ডেটা এবং ইভেন্ট হ্যান্ডলারগুলি পাস করার জন্য প্রপস ব্যবহার করুন ।

এই তালিকাগুলিতে আপনার উপাদানগুলির ডেটা নিয়ে কাজ করার সময় আপনাকে গাইড করতে সহায়তা করা উচিত।

সাজসরঞ্জাম

  • অপরিবর্তনীয়
    • যা প্রতিক্রিয়া দ্রুত রেফারেন্স চেক করতে দেয়
  • আপনার ভিউ-কন্ট্রোলার থেকে ডেটা পাস করার জন্য ব্যবহৃত হয়
    • আপনার শীর্ষ স্তরের উপাদান
  • ভাল পারফরম্যান্স আছে
    • শিশু উপাদানগুলিতে ডেটা প্রেরণ করতে এটি ব্যবহার করুন

রাষ্ট্র

  • আপনার ভিউ-কন্ট্রোলারে পরিচালনা করা উচিত
    • আপনার শীর্ষ স্তরের উপাদান
  • পরিবর্তনীয়
  • খারাপ কর্মক্ষমতা আছে
  • সন্তানের উপাদানগুলি থেকে অ্যাক্সেস করা উচিত নয়
    • পরিবর্তে প্রস সঙ্গে এটি পাস

পিতা-সন্তানের সম্পর্ক নেই এমন দুটি উপাদানগুলির মধ্যে যোগাযোগের জন্য, আপনি নিজের বৈশ্বিক ইভেন্ট সিস্টেম সেটআপ করতে পারেন। কম্পোনেন্টডিডমাউন্ট () এর ইভেন্টগুলিতে সাবস্ক্রাইব করুন, কম্পোনেন্ট উইলউনমাউন্ট () এ সাবস্ক্রাইব করুন, এবং আপনি যখন কোনও ইভেন্ট পাবেন তখন সেটস্টেট () কল করুন। এটি সাজানোর সম্ভাব্য উপায়গুলির মধ্যে একটি ফ্লাক্স প্যাটার্ন। - https://facebook.github.io/react/tips/communicate-between-components.html

উপাদানগুলির স্টেট থাকা উচিত?

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

আপনার অনেকগুলি উপাদানকে যতটা সম্ভব রাষ্ট্রবিহীন রাখার চেষ্টা করুন । এটি করার মাধ্যমে আপনি রাষ্ট্রটিকে তার সবচেয়ে যুক্তিসঙ্গত স্থানে বিচ্ছিন্ন করে দেবেন এবং অপ্রয়োজনীয়তা হ্রাস করবেন, আপনার অ্যাপ্লিকেশন সম্পর্কে যুক্তিযুক্ত করা আরও সহজ করে তুলবে।

একটি সাধারণ প্যাটার্ন হ'ল একাধিক স্টেটলেস উপাদান তৈরি করা যা কেবলমাত্র ডেটা রেন্ডার করে এবং সেগুলির উপরে একটি হাইফার্কিতে একটি রাষ্ট্রীয় উপাদান থাকে যা তার রাজ্যটিকে প্রপসের মাধ্যমে তার শিশুদের কাছে প্রেরণ করে। রাষ্ট্রীয় উপাদানগুলি সমস্ত মিথস্ক্রিয়া যুক্তি সংযুক্ত করে, যখন রাষ্ট্রবিহীন উপাদানগুলি ঘোষণামূলক উপায়ে ডেটা উপস্থাপনের যত্ন নেয়। - https://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html# কি- কম্পোনেন্টস- সোલ્ડ- শেভ- স্টেট

রাজ্যে কি করা উচিত?

রাজ্যে এমন ডেটা থাকা উচিত যা কোনও উপাদানগুলির ইভেন্ট হ্যান্ডলারগুলি কোনও ইউআই আপডেট ট্রিগার করতে পরিবর্তিত হতে পারে। বাস্তব অ্যাপ্লিকেশনগুলিতে এই ডেটা খুব ছোট এবং জেএসএন-সিরিয়ালযোগ্য হতে পারে। রাষ্ট্রীয় উপাদান তৈরি করার সময়, তার রাজ্যের ন্যূনতম সম্ভাব্য উপস্থাপনা সম্পর্কে চিন্তা করুন এবং কেবলমাত্র এই বৈশিষ্ট্যগুলিকে এই স্টেটে সংরক্ষণ করুন। রেন্ডারের অভ্যন্তরে () কেবলমাত্র এই রাজ্যের উপর ভিত্তি করে আপনার প্রয়োজন অন্য কোনও তথ্য গণনা করুন। আপনি দেখতে পাবেন যে এইভাবে অ্যাপ্লিকেশনগুলি সম্পর্কে চিন্তা করা এবং লেখার সর্বাধিক সঠিক প্রয়োগ হতে পারে, যেহেতু অপ্রয়োজনীয় বা গণ্য মানগুলিকে রাষ্ট্রের সাথে যুক্ত করার অর্থ আপনার নিজের জন্য তাদের পুনরায় প্রতিক্রিয়ার উপর নির্ভর করার পরিবর্তে তাদের সুস্পষ্টভাবে সিঙ্কে রাখা দরকার। - https://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html# what - should - go - in - state


2
অসম্মতি, সমস্ত প্রপস করা ডেটা নিচে পাস করার জন্য আসলে কম পারফর্মেন্ট। সন্তানের উপাদানগুলির জন্য কেবল স্টোরটি সেট করুন, তারপরে আপনাকে প্রপসের কোনও গণ্ডগোলের সাথে ডিল করতে হবে না এবং প্রপস পরিবর্তনের সময় আপনাকে নিজের উপাদানগুলি আপডেট করতে হবে। কেবল আপনার স্টোরটি আপডেট করুন এবং উপাদানটিকে তার স্টোর থেকে তার ডেটা পেতে দিন।
PositiveGuy

আপনি কি আমাকে বলতে পারেন কেন রাজ্যের তুলনায় প্রপসগুলি বেশি কর্মক্ষমতা। ধন্যবাদ।
hqt

@ htt আমি মনে করি কারণ এটি পরিবর্তনযোগ্য, মান পরিবর্তন করার জন্য তাদের অভ্যন্তরের তুলনা দ্রুত
গাস্পার

@ বেন্টঅনকোডিং, শুভ দিন, দয়া করে আপনি সহায়তা করতে পারেন। আমি কি এই জাতীয় অবস্থাটি কল্পনা করতে পারি যে কোনও সময় এমন কোনও তথ্য রয়েছে যা ব্যবহারকারীর ইন্টারঅ্যাকশনের একটি উপাদানগুলির মধ্যে পরিবর্তন হতে চলেছে, এখানেই রাষ্ট্রটি ব্যবহৃত হয়?
ডিকেনস

72

আপনি এটিকে সমতল জেএস ফাংশনের সাথে সম্পর্কিত করে সেরা বুঝতে পারবেন

সহজভাবে করা,

রাজ্য হল উপাদানটির স্থানীয় রাষ্ট্র যা উপাদানটির বাইরে অ্যাক্সেস এবং সংশোধন করা যায় না। এটি কোনও ফাংশনে স্থানীয় ভেরিয়েবলের সমতুল্য।

সাধারণ জেএস ফাংশন

const DummyFunction = () => {
  let name = 'Manoj';
  console.log(`Hey ${name}`)
}

প্রতিক্রিয়া প্রতিক্রিয়া

class DummyComponent extends React.Component {
  state = {
    name: 'Manoj'
  }
  render() {
    return <div>Hello {this.state.name}</div>;
  }

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

সাধারণ জেএস ফাংশন

const DummyFunction = (name) => {
  console.log(`Hey ${name}`)
}

// when using the function
DummyFunction('Manoj');
DummyFunction('Ajay');

প্রতিক্রিয়া প্রতিক্রিয়া

class DummyComponent extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }

}

// when using the component
<DummyComponent name="Manoj" />
<DummyComponent name="Ajay" />

ক্রেডিট: মনোজ সিং নেগি

নিবন্ধ লিঙ্ক: প্রতিক্রিয়া রাজ্য বনাম প্রপস ব্যাখ্যা


16
এটি আসলে একটি খুব সহায়ক উত্তর। এটি পড়ার পরে আমি আরও সম্পূর্ণ উত্তরগুলি বুঝতে পারি। ধন্যবাদ।
অ্যারন

1
প্রতিক্রিয়া উপাদান = স্পষ্টত জেএস ফাংশন এটি পরিষ্কারভাবে ব্যাখ্যা করার একটি দুর্দান্ত উপায়। এবং প্রতিক্রিয়াটি ক্রিয়ামূলক উপাদানগুলির দিকে আরও বেশি করে সরে যাওয়ার সাথে এটি আরও আক্ষরিক ক্ষেত্রে হয়ে উঠছে।
জেডি স্যান্ডিফার

1
সেরা ব্যাখ্যা আমি পড়েছি, আপনাকে ধন্যবাদ
iWizard

48

প্রপস বনাম রাজ্যের সংক্ষিপ্তসারটি আমার কাছে সবচেয়ে ভাল লেগেছে এটি এখানে: সেই লোকগুলিকে প্রতিক্রিয়া-গাইড বিগ হ্যাট টিপ। নীচে সেই পৃষ্ঠাটির সম্পাদিত সংস্করণ রয়েছে:


প্রপস বনাম রাজ্য

tl; dr যদি কোনও অংশের কোনও সময়ে তার বৈশিষ্ট্যগুলির একটির পরিবর্তনের প্রয়োজন হয়, তবে সেই বৈশিষ্ট্যটি তার রাজ্যের অংশ হওয়া উচিত, অন্যথায় এটি কেবলমাত্র সেই উপাদানটির জন্য একটি প্রপোজ হওয়া উচিত।


সাজসরঞ্জাম

প্রপস (বৈশিষ্ট্যের জন্য সংক্ষিপ্ত) একটি উপাদানগুলির কনফিগারেশন। এগুলি উপরের থেকে প্রাপ্ত এবং অপরিবর্তনীয় যতক্ষণ তাদের গ্রহণকারী উপাদানগুলির সাথে সম্পর্কিত। কোনও উপাদান তার প্রপস পরিবর্তন করতে পারে না, তবে এটির শিশু উপাদানগুলির প্রপস একসাথে রাখার জন্য এটি দায়বদ্ধ। প্রপসকে কেবল ডেটা হতে হবে না - কলব্যাক ফাংশনগুলি প্রপস হিসাবে পাস হতে পারে।

অবস্থা

রাজ্যটি এমন একটি ডেটা কাঠামো যা কোনও উপাদান যখন মাউন্ট করে তখন একটি ডিফল্ট মান দিয়ে শুরু হয়। এটি বেশিরভাগ সময় পরিবর্তিত হতে পারে, বেশিরভাগ ব্যবহারকারীর ইভেন্টের ফলে।

একটি উপাদান অভ্যন্তরীণভাবে তার নিজস্ব রাষ্ট্র পরিচালনা করে। প্রাথমিক অবস্থা নির্ধারণের পাশাপাশি এটির শিশুদের রাজ্যের সাথে কোনও ব্যবসায়ের ঝাঁকুনি নেই। আপনি সেই উপাদানটির ব্যক্তিগত হিসাবে রাষ্ট্রকে ধারণা দিতে পারেন।

প্রপস এবং রাষ্ট্র পরিবর্তন করা

                                                   প্রপস স্টেট
    অভিভাবক উপাদান থেকে প্রাথমিক মান পেতে পারেন? হ্যা হ্যা
    প্যারেন্ট কম্পোনেন্ট দ্বারা পরিবর্তন করা যেতে পারে? হ্যাঁ না
    উপাদানগুলির মধ্যে ডিফল্ট মান নির্ধারণ করতে পারে? * হ্যাঁ হ্যাঁ
    কম্পোনেন্টের ভিতরে কি পরিবর্তন করা যায়? না হ্যাঁ
    শিশু উপাদানগুলির জন্য প্রাথমিক মান নির্ধারণ করতে পারে? হ্যা হ্যা
    শিশু উপাদান পরিবর্তন করতে পারেন? হ্যাঁ না
  • নোট করুন যে পিতা-মাতার কাছ থেকে প্রাপ্ত প্রপস এবং রাজ্যের প্রাথমিক মান উভয়ই একটি উপাদানগুলির মধ্যে সংজ্ঞায়িত ডিফল্ট মানগুলিকে ওভাররাইড করে।

এই উপাদানটির রাষ্ট্র থাকা উচিত?

রাষ্ট্র চ্ছিক। যেহেতু রাষ্ট্র জটিলতা বৃদ্ধি করে এবং পূর্বাভাসযোগ্যতা হ্রাস করে, তাই রাষ্ট্র ব্যতীত কোনও উপাদানই পছন্দনীয়। যদিও আপনি একটি ইন্টারেক্টিভ অ্যাপ্লিকেশনটিতে স্পষ্টভাবে রাষ্ট্র ব্যতীত না করতে পারেন তবুও আপনার প্রচুর স্টেটফুল উপাদানগুলি এড়ানো উচিত।

উপাদান ধরনের

স্টেটলেস উপাদান কেবল প্রপস, কোনও রাজ্য নেই। রেন্ডার () ফাংশন ছাড়াও তেমন কিছু চলছে না। তাদের যুক্তিগুলি তারা প্রাপ্ত প্রপাগুলির চারদিকে ঘোরে। এটি তাদের অনুসরণ করা এবং পরীক্ষা করা খুব সহজ করে তোলে।

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

সূত্র


1
"পিতামাতার কাছ থেকে প্রাপ্ত রাষ্ট্রীয় প্রাথমিক মান" বলতে কী বোঝ? আমি যতদূর জানি রাষ্ট্রটি কেবলমাত্র একটি উপাদানগুলির স্কোপেই সংজ্ঞায়িত করা হয়েছে এবং সরাসরি বাইরে থেকে পরিবর্তন করা যায় না।
ম্যাক্সিম কুজমিন

@ ম্যাক্সিমকজমিন আমি বিশ্বাস করি যে এটি 'রঙের মতো' রাজ্যের সূচনা করার জন্য 'ইনিশিয়াল কালার' এর মতো প্রপ গ্রহণ করার সাধারণ প্যাটার্নের একটি উল্লেখ। রাজ্যটিকে প্রাথমিকভাবে প্রপ থেকে মূল্য দেওয়া হয় (পিতামাতার কাছ থেকে প্রাপ্ত) এবং তারপরে তার পরে নিয়মিত রাষ্ট্রের মতো কাজ করা অবিরত থাকে। রাষ্ট্র বনাম প্রপসের সাথে পরিচিতির সাথে এটি অন্তর্ভুক্ত করা কিছুটা বিভ্রান্তিকর হতে পারে তবে এটি জানা গুরুত্বপূর্ণ প্যাটার্ন।
জেডি স্যান্ডিফার

18

প্রপস ("সম্পত্তিগুলির" জন্য সংক্ষিপ্ত) এবং রাজ্য উভয়ই সরল জাভাস্ক্রিপ্ট অবজেক্ট। যদিও উভয়ই রেন্ডার আউটপুটকে প্রভাবিত করে এমন তথ্য রাখে, সেগুলি একটি গুরুত্বপূর্ণ উপায়ে পৃথক: প্রপগুলি উপাদানগুলিতে (ফাংশন প্যারামিটারের সমান) পাস হয় যেখানে রাষ্ট্রটি উপাদানটির মধ্যে পরিচালিত হয় (কোনও ফাংশনের মধ্যে ঘোষিত ভেরিয়েবলের অনুরূপ)।

সুতরাং কেবল রাষ্ট্র আপনার বর্তমান উপাদানগুলির মধ্যে সীমাবদ্ধ তবে প্রপসগুলি আপনার ইচ্ছামত যে কোনও উপাদানগুলিতে প্রেরণ করা যেতে পারে ... আপনি বর্তমান উপাদানটির অবস্থা অন্য উপাদানগুলির কাছে প্রপস হিসাবে পাস করতে পারেন ...

প্রতিক্রিয়াতেও, আমাদের স্টেটলেস উপাদান রয়েছে যার কেবল প্রপস রয়েছে এবং অভ্যন্তরীণ রাষ্ট্র নয় ...

নীচের উদাহরণে তারা কীভাবে আপনার অ্যাপ্লিকেশনটিতে কাজ করে তা দেখাচ্ছে:

অভিভাবক (রাষ্ট্র-পূর্ণ উপাদান):

class SuperClock extends React.Component {

  constructor(props) {
    super(props);
    this.state = {name: "Alireza", date: new Date().toLocaleTimeString()};
  }

  render() {
    return (
      <div>
        <Clock name={this.state.name} date={this.state.date} />
      </div>
    );
  }
}

শিশু (রাষ্ট্রের চেয়ে কম উপাদান):

const Clock = ({name}, {date}) => (
    <div>
      <h1>{`Hi ${name}`}.</h1>
      <h2>{`It is ${date}`}.</h2>
    </div>
);

11

প্রপস এবং রাষ্ট্রের মধ্যে মূল পার্থক্য হ'ল রাষ্ট্রটি অভ্যন্তরীণ এবং উপাদানটি নিজেই নিয়ন্ত্রিত থাকে তবে প্রসগুলি বাহ্যিক এবং উপাদানকে যা রেন্ডার করে তা নিয়ন্ত্রণ করে।

function A(props) {
  return <h1>{props.message}</h1>
}

render(<A message=”hello />,document.getElementById(“root”));


class A extends React.Component{  
  constructor(props) {  
    super(props)  
    this.state={data:"Sample Data"}  
  }  
  render() {
    return(<h2>Class State data: {this.state.data}</h2>)  
  } 
}

render(<A />, document.getElementById("root"));

রাজ্য ভিএস প্রপস

  • রাষ্ট্র পরিবর্তন করা যেতে পারে (পরিবর্তনযোগ্য)
  • প্রপসগুলি (অপরিবর্তনীয়) পারে না

7

মূলত, পার্থক্যটি হ'ল রাষ্ট্রটি ওওপি-র বৈশিষ্ট্যগুলির মতো কিছু : এটি একটি শ্রেণীর কাছে স্থানীয় কিছু (উপাদান), এটির আরও ভালভাবে বর্ণনা করার জন্য ব্যবহৃত হয়। সাজসরঞ্জাম পরামিতি মত - তারা হয় পাস একটি উপাদান (পিতা বা মাতা) এর আহ্বায়ক থেকে একটি উপাদান হবে: যেন আপনি নির্দিষ্ট পরামিতি সঙ্গে একটি ফাংশন বলা হয়।


5

প্রতিক্রিয়াযুক্ত উভয় রাষ্ট্র এবং প্রপসগুলি কোনও উপাদানগুলিতে ডেটা নিয়ন্ত্রণ করতে ব্যবহৃত হয়, সাধারণত প্রসেস পিতামাতার দ্বারা সেট করা হয় এবং শিশু উপাদানগুলিতে প্রেরণ করা হয় এবং সেগুলি পুরো উপাদান জুড়ে স্থির হয়। যে ডেটা পরিবর্তন হতে চলেছে তার জন্য আমাদের রাষ্ট্র ব্যবহার করতে হবে। আর সাজসরঞ্জাম হয় অপরিবর্তনীয় যখন রাজ্য চপল , আপনি সাজসরঞ্জাম আপনাকে অভিভাবক উপাদান থেকে কি করতে পারেন পরিবর্তন এবং তারপর এটি শিশু উপাদান পাস করতে চান তাহলে।


4

আমি প্রতিক্রিয়া সঙ্গে কাজ করার সময় শিখেছি হিসাবে।

  • প্রপসগুলি কোনও উপাদান দ্বারা বাহ্যিক পরিবেশ থেকে ডেটা পেতে ব্যবহার করা হয় যেমন অন্য উপাদান (খাঁটি, কার্যকরী বা শ্রেণি) বা একটি সাধারণ শ্রেণি বা জাভাস্ক্রিপ্ট / টাইপসক্রিপ্ট কোড

  • রাজ্যের ব্যবহার করা হয় একটি উপাদানের অভ্যন্তরীণ পরিবেশ পরিচালনার জন্য অর্থ ডেটা পরিবর্তন ভিতরে উপাদান


3

প্রপস: প্রপস উপাদানগুলির সম্পত্তি ছাড়া আর কিছুই নয় এবং উপাদানগুলির প্রতিক্রিয়া দেখানো জাভাস্ক্রিপ্ট ফাংশন ছাড়া কিছুই নয়।

  class Welcome extends React.Component {
    render() {
      return <h1>Hello {this.props.name}</h1>;
    }
  }

কনস্ট উপাদান =;

<Welcome name="Sara" />ওয়েলকাম কম্পোনেন্টের প্রপস হিসাবে এখানে একটি অবজেক্ট {নাম: 'সারা' passing পাস করছে। একটি পিতা বা মাতা উপাদান থেকে শিশু উপাদানগুলিতে ডেটা পাস করার জন্য আমরা প্রপস ব্যবহার করি। প্রপসগুলি পরিবর্তনযোগ্য। কোনও উপাদানগুলির জীবনচক্র চলাকালীন প্রপসগুলি পরিবর্তন করা উচিত নয় (এগুলি পরিবর্তনীয় বিবেচনা করুন)।

রাজ্য: রাষ্ট্র কেবলমাত্র উপাদানগুলির মধ্যেই অ্যাক্সেসযোগ্য। উপাদানগুলির মধ্যে ডেটা ট্র্যাক রাখতে আমরা রাষ্ট্র ব্যবহার করি। আমরা সেটস্টেট দ্বারা রাষ্ট্র পরিবর্তন করতে পারি। যদি আমাদের সন্তানের কাছে রাষ্ট্রের প্রয়োজন হয় তবে আমাদের এটিকে প্রপস হিসাবে পাস করতে হবে।

class Button extends React.Component {
  constructor() {
    super();
    this.state = {
      count: 0,
    };
  }

  updateCount() {
    this.setState((prevState, props) => {
      return { count: prevState.count + 1 }
    });
  }

  render() {
    return (<button
              onClick={() => this.updateCount()}
            >
              Clicked {this.state.count} times
            </button>);
  }
}

3

রাষ্ট্র:

  1. রাজ্যগুলি পরিবর্তনযোগ্য।
  2. রাজ্যগুলি পৃথক উপাদানগুলির সাথে যুক্ত অন্য উপাদানগুলি ব্যবহার করতে পারে না।
  3. রাজ্যগুলি উপাদান মাউন্টে আরম্ভ করা হয়।
  4. রাজ্যগুলি উপাদানগুলির মধ্যে গতিশীল পরিবর্তনগুলি উপস্থাপনের জন্য ব্যবহৃত হয়।

সাজসরঞ্জাম:

  1. প্রপসগুলি পরিবর্তনযোগ্য।
  2. আপনি উপাদানগুলির মধ্যে প্রপস পাস করতে পারেন।
  3. প্রপস বেশিরভাগ উপাদানগুলির মধ্যে কথোপকথনের জন্য ব্যবহৃত হয় You আপনি পিতামাতার থেকে সরাসরি সন্তানের কাছে যেতে পারেন। শিশু থেকে পিতামাতার কাছে যাওয়ার জন্য আপনার রাজ্যগুলি উত্তোলনের ধারণাটি ব্যবহার করা উচিত।

class Parent extends React.Component{
  render()
  {
     return(
        <div>
            <Child name = {"ron"}/>
        </div>
      );
  }
}

class Child extends React.Component{
{
    render(){
      return(
         <div>
              {this.props.name}
        </div>
      );
     }
}


message "বার্তা": "আনকাচড সিনট্যাক্স এরর: অপ্রত্যাশিত টোকেন <", "ফাইলের নাম": " stacksnippets.net/js ", "লিনেনো": 17, "কলনো": 9}
নিকো জোজো

2

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

উদাহরণস্বরূপ, আসুন আমরা বলি যে আপনার কিছু ড্রপডাউন নিয়ন্ত্রণ রয়েছে (যা কাস্টম স্টাইলিংয়ের জন্য স্ট্যান্ডার্ড এইচটিএমএল নির্বাচনকে আবৃত করে) যা ক) তালিকা থেকে কিছু মান নির্বাচন করতে পারে এবং খ) খোলা বা বন্ধ করা (অর্থাত্ বিকল্প তালিকা প্রদর্শিত বা লুকানো)। এখন, আসুন আমরা বলি যে আপনার অ্যাপ্লিকেশনটি কোনও ধরণের আইটেমের তালিকা এবং তালিকা প্রবেশের জন্য আপনার ড্রপডাউন নিয়ন্ত্রণ ফিল্টার প্রদর্শন করে filter তারপরে, সক্রিয় ফিল্টার মানটি প্রপ হিসাবে পাস করা এবং খোলা / বন্ধ রাষ্ট্র স্থানীয় রাখা ভাল। এছাড়াও, এটিকে কার্যক্ষম করার জন্য, আপনি প্যারেন্ট উপাদান থেকে একটি onChange হ্যান্ডলারটি প্রেরণ করবেন যা ড্রপডাউন উপাদানটির ভিতরে ডাকা হবে এবং অবিলম্বে স্টোরটিতে আপডেট তথ্য (নতুন নির্বাচিত ফিল্টার) প্রেরণ করবে। অন্যদিকে, খোলা / বদ্ধ অবস্থা ড্রপডাউন উপাদানটির মধ্যে রাখা যেতে পারে, কারণ ব্যবহারকারীর প্রকৃতপক্ষে এটির মান পরিবর্তন না করা অবধি নিয়ন্ত্রণটি খোলা থাকলে কীভাবে বাকি অ্যাপ্লিকেশনগুলি সত্যই তা বিবেচনা করে না।

নিম্নলিখিত কোডটি সম্পূর্ণরূপে কাজ করছে না, এর জন্য সিএসএস এবং হ্যান্ডলিং ড্রপডাউন ক্লিক / ব্লার / ইভেন্টগুলি পরিবর্তন দরকার তবে আমি উদাহরণটি ন্যূনতম রাখতে চাই। আশা করি এটি পার্থক্যটি বুঝতে সহায়তা করে।

const _store = {
    items: [
    { id: 1, label: 'One' },
    { id: 2, label: 'Two' },
    { id: 3, label: 'Three', new: true },
    { id: 4, label: 'Four', new: true },
    { id: 5, label: 'Five', important: true },
    { id: 6, label: 'Six' },
    { id: 7, label: 'Seven', important: true },
    ],
  activeFilter: 'important',
  possibleFilters: [
    { key: 'all', label: 'All' },
    { key: 'new', label: 'New' },
    { key: 'important', label: 'Important' }
  ]
}

function getFilteredItems(items, filter) {
    switch (filter) {
    case 'all':
        return items;

    case 'new':
        return items.filter(function(item) { return Boolean(item.new); });

    case 'important':
        return items.filter(function(item) { return Boolean(item.important); });

    default:
        return items;
  }
}

const App = React.createClass({
  render: function() {
    return (
            <div>
            My list:

            <ItemList   items={this.props.listItems} />
          <div>
            <Dropdown 
              onFilterChange={function(e) {
                _store.activeFilter = e.currentTarget.value;
                console.log(_store); // in real life, some action would be dispatched here
              }}
              filterOptions={this.props.filterOptions}
              value={this.props.activeFilter}
              />
          </div>
        </div>
      );
  }
});

const ItemList = React.createClass({
  render: function() {
    return (
      <div>
        {this.props.items.map(function(item) {
          return <div key={item.id}>{item.id}: {item.label}</div>;
        })}
      </div>
    );
  }
});

const Dropdown = React.createClass({
    getInitialState: function() {
    return {
        isOpen: false
    };
  },

  render: function() {
    return (
        <div>
            <select 
            className="hidden-select" 
          onChange={this.props.onFilterChange}
          value={this.props.value}>
            {this.props.filterOptions.map(function(option) {
            return <option value={option.key} key={option.key}>{option.label}</option>
          })}
        </select>

        <div className={'custom-select' + (this.state.isOpen ? ' open' : '')} onClick={this.onClick}>
            <div className="selected-value">{this.props.activeFilter}</div>
          {this.props.filterOptions.map(function(option) {
            return <div data-value={option.key} key={option.key}>{option.label}</div>
          })}
        </div>
      </div>
    );
  },

  onClick: function(e) {
    this.setState({
        isOpen: !this.state.isOpen
    });
  }
});

ReactDOM.render(
  <App 
    listItems={getFilteredItems(_store.items, _store.activeFilter)} 
    filterOptions={_store.possibleFilters}
    activeFilter={_store.activeFilter}
    />,
  document.getElementById('root')
);

2

রাজ্য হল আপনার উপাদান দ্বারা ধারণিত তথ্যের সাথে প্রতিক্রিয়া ব্যক্ত করার উপায়।

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

সাধারণত রাষ্ট্রের সংজ্ঞা দেওয়ার সর্বোত্তম উপায়টি হ'ল:

class MyComponent extends React.Component {
  constructor() {
    super();
    this.state = { key1: value1, key2: value2 }    
  }
}

প্রতিক্রিয়া নেটিভ এর latests বাস্তবায়ন আপনি ঠিক করতে পারেন:

class MyComponent extends React.Component {
  state = { key1: value1, key2: value2 }    
}

এই দুটি উদাহরণ ঠিক একইভাবে কার্যকর করে, এটি কেবল একটি বাক্য গঠন উন্নতি।

সুতরাং, আমাদের ও ও প্রোগ্রামিংয়ে সর্বদা যেমন অবজেক্ট অ্যাট্রিবিউট ব্যবহার করা যায় তার থেকে আলাদা কী? সাধারণত, আপনার রাজ্যে অনুষ্ঠিত তথ্য স্থিতিশীল নয়, সময়ের সাথে সাথে এটি পরিবর্তিত হবে এবং এই পরিবর্তনগুলি প্রতিফলিত করার জন্য আপনার দর্শন আপডেট করতে হবে। রাজ্য একটি সহজ উপায়ে এই কার্যকারিতা সরবরাহ করে।

রাষ্ট্র অনির্বচনীয় হতে হয়! এবং আমি এ বিষয়ে যথেষ্ট চাপ দিতে পারি না। এর অর্থ কী? এর অর্থ হ'ল আপনার এমন কিছু করা উচিত নয়।

 state.key2 = newValue;

এটি করার সঠিক উপায়:

this.setState({ key2: newValue });

এটি.সেটস্টেট ব্যবহার করে আপনার উপাদানগুলি আপডেট চক্রের মধ্য দিয়ে চলে এবং যদি রাজ্যের কোনও অংশ পরিবর্তিত হয় তবে এই পরিবর্তনগুলি প্রতিফলিত করতে আপনার উপাদান রেন্ডার পদ্ধতিটি আবার কল করা হবে।

আরও প্রসারিত ব্যাখ্যার জন্য প্রতিক্রিয়া ডক্সটি দেখুন: https://facebook.github.io/react/docs/state-and-lifecycle.html


2

প্রপসগুলি কেবল বৈশিষ্ট্যের জন্য শর্টহ্যান্ড। প্রপস হ'ল উপাদানগুলি একে অপরের সাথে কীভাবে কথা বলে। আপনি যদি প্রতিক্রিয়াটির সাথে একেবারেই পরিচিত হন তবে আপনার জানা উচিত যে প্যারেন্টস উপাদানটি নীচের দিকে প্রবাহিত হয়।

এমন একটি ক্ষেত্রেও রয়েছে যে আপনার ডিফল্ট প্রপস থাকতে পারে যাতে প্যারেন্টস উপাদানগুলি প্রপসগুলি না পাস করেও প্রপস সেট করা থাকে।

এই কারণেই লোকেরা প্রতিক্রিয়াটিকে এক-দিকনির্দেশক ডেটা প্রবাহ হিসাবে উল্লেখ করে। এটি আপনার মাথা পেতে কিছুটা সময় নেয় এবং আমি সম্ভবত এটি পরে ব্লগ করব, তবে আপাতত মনে রাখবেন: পিতামাতার কাছ থেকে সন্তানের কাছে ডেটা প্রবাহিত হয়। প্রপসগুলি পরিবর্তনযোগ্য (পরিবর্তনের জন্য অভিনব শব্দ)

সুতরাং আমরা খুশি। উপাদানগুলি পিতামাতার কাছ থেকে ডেটা গ্রহণ করে। সব সাজানো, তাই না?

ভাল, বেশ না। যখন কোনও উপাদান পিতামাতাকে বাদ দিয়ে অন্য কারও কাছ থেকে ডেটা গ্রহণ করবে তখন কী হবে? যদি ব্যবহারকারী সরাসরি উপাদানটিতে ডেটা প্রবেশ করে?

ঠিক আছে, এই কারণেই আমাদের রাষ্ট্র রয়েছে।

অবস্থা

প্রপসগুলি পরিবর্তন করা উচিত নয়, সুতরাং রাষ্ট্রের পদক্ষেপগুলি আপ করুন। সাধারণত উপাদানগুলির স্টেট থাকে না এবং তাই স্টেটলেস হিসাবে উল্লেখ করা হয়। রাষ্ট্র ব্যবহার করে এমন একটি উপাদান রাষ্ট্রীয় হিসাবে পরিচিত। পার্টিতে এই ছোট্ট টিডবিটটি নির্বিঘ্নে বর্ষণ করুন এবং লোকেরা আপনার থেকে দূরে সরে যান।

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

রাষ্ট্রের সামান্য উদাহরণ হিসাবে, এখানে একটি অনুসন্ধান বারের একটি স্নিপেট রয়েছে (আপনি যদি প্রতিক্রিয়া সম্পর্কে আরও জানতে চান তবে এই কোর্সটি পরীক্ষা করে দেখার মতো)

Class SearchBar extends Component {
 constructor(props) {
  super(props);
this.state = { term: '' };
 }
render() {
  return (
   <div className="search-bar">
   <input 
   value={this.state.term}
   onChange={event => this.onInputChange(event.target.value)} />
   </div>
   );
 }
onInputChange(term) {
  this.setState({term});
  this.props.onSearchTermChange(term);
 }
}

সারসংক্ষেপ

প্রপস এবং রাজ্য একই জিনিস করে তবে বিভিন্নভাবে ব্যবহৃত হয়। আপনার উপাদানগুলির বেশিরভাগই সম্ভবত রাজ্যহীন।

প্রপসগুলি পিতামাতার থেকে সন্তানের কাছে বা উপাদানটি নিজেই ডেটা পাঠাতে ব্যবহৃত হয়। এগুলি অপরিবর্তনীয় এবং এভাবে পরিবর্তন করা হবে না।

রাজ্যটি পরিবর্তনীয় ডেটা বা ডেটা পরিবর্তিত হবে for এটি ব্যবহারকারী ইনপুট জন্য বিশেষভাবে দরকারী। উদাহরণস্বরূপ অনুসন্ধান বারগুলি মনে করুন। ব্যবহারকারী ডেটা টাইপ করবেন এবং এটি তারা যা দেখবে তা আপডেট করবে।


2

সংক্ষেপে.

প্রপস মানগুলি পরিবর্তন করা যায় না [অপরিবর্তনীয়]

রাষ্ট্রীয় মানগুলি সেটস্টেট পদ্ধতি [পরিবর্তনীয়] ব্যবহার করে পরিবর্তিত হতে পারে


1

রাষ্ট্র - এটি একটি বিশেষ পরিবর্তনীয় সম্পত্তি যা একটি উপাদান উপাদান রাখে। কম্পোনেট মাউন্ট করলে এর ডিফল্ট মান থাকে।

প্রপস - এটি একটি বিশেষ সম্পত্তি যা প্রকৃতির দ্বারা পরিবর্তনযোগ্য এবং পিতা-মাতার কাছ থেকে সন্তানের কাছে মূল্য দ্বারা পাসের ক্ষেত্রে ব্যবহৃত হয় used প্রপস উপাদানগুলির মধ্যে কেবল একটি কথোপকথন চ্যানেল, সর্বদা শীর্ষ (পিতামাতা) থেকে বোতাম (শিশু) এ চলে যায়।

নীচে রাজ্য এবং প্রপসগুলির সংমিশ্রণের সম্পূর্ণ উদাহরণ রয়েছে: -

<!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8" />
        <title>state&props example</title>

        <script src="https://unpkg.com/react@0.14.8/dist/react.min.js"></script>
        <script src="https://unpkg.com/react-dom@0.14.8/dist/react-dom.min.js"></script>
        <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>

      </head>
      <body>
      <div id="root"></div>
        <script type="text/babel">

            var TodoList = React.createClass({
                render(){
                    return <div className='tacos-list'>
                                {
                                    this.props.list.map( ( todo, index ) => {
                                    return <p key={ `taco-${ index }` }>{ todo }</p>;
                            })}
                            </div>;
                }
            });

            var Todo = React.createClass({
                getInitialState(){
                    return {
                        list : [ 'Banana', 'Apple', 'Beans' ]       
                    }
                },
                handleReverse(){
                    this.setState({list : this.state.list.reverse()});
                },
                render(){
                    return <div className='parent-component'>
                              <h3 onClick={this.handleReverse}>List of todo:</h3>
                              <TodoList list={ this.state.list }  />
                           </div>;
                }
            });

            ReactDOM.render(
                <Todo/>,
                document.getElementById('root')
            );

        </script>
      </body>
      </html>

1

সাধারণভাবে, এক উপাদানগুলির রাষ্ট্র (পিতামাতার) হ'ল সন্তানের উপাদানগুলির জন্য প্রপস।

  1. রাজ্য এমন কোনও অংশের মধ্যে থাকে যেখানে পিতামাতার কাছ থেকে সন্তানের কাছে প্রপসগুলি পাঠানো হয়।
  2. প্রপসগুলি সাধারণত অপরিবর্তনীয়।

    class Parent extends React.Component {
        constructor() {
            super();
            this.state = {
                name : "John",
            }
        }
        render() {
            return (
                <Child name={this.state.name}>
            )
        }
    }
    
    class Child extends React.Component {
        constructor() {
            super();
        }
    
        render() {
            return(
                {this.props.name} 
            )
        }
    }

উপরের কোডে, আমাদের একটি প্যারেন্ট ক্লাস (প্যারেন্ট) রয়েছে যার নাম হিসাবে এর রাজ্য থাকে যা সন্তানের উপাদানকে (শিশু শ্রেণিতে) প্রপস হিসাবে পাস করা হয় এবং শিশু উপাদানটি {this.prop.name using ব্যবহার করে রেন্ডার করে


1

আপনার কাছে এমন কিছু ডেটা রয়েছে যা ব্যবহারকারীর দ্বারা অ্যাপ্লিকেশনের কোথাও প্রবেশ করা হচ্ছে।

  1. যে উপাদানটিতে ডেটা প্রবেশ করা হচ্ছে সেটির তথ্যটি তার রাজ্যে থাকা উচিত কারণ ডেটা এন্ট্রি করার সময় এটির পরিবর্তন ও পরিবর্তন করা দরকার

  2. অ্যাপ্লিকেশনটিতে অন্য কোথাও ডেটা অন্য সমস্ত উপাদানগুলির প্রপস হিসাবে নিচে দেওয়া উচিত

সুতরাং হ্যাঁ প্রপসগুলি পরিবর্তন হচ্ছে তবে সেগুলি 'উত্স' এ পরিবর্তিত হয়েছে এবং সেখান থেকে কেবল সেখান থেকে প্রবাহিত হবে। সুতরাং প্রপস উপাদানগুলি গ্রহণ করার প্রসঙ্গে তা পরিবর্তনযোগ্য

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


1

প্রতিক্রিয়াতে রাজ্যগুলি ডেটা পাশাপাশি প্রপস সংরক্ষণ করে। পরেরটির সাথে এর পার্থক্য হ'ল সঞ্চিত ডেটা বিভিন্ন পরিবর্তনের মাধ্যমে সংশোধন করা যায়। এগুলি ফ্ল্যাট জাভাস্ক্রিপ্টে লিখিত সামগ্রীর চেয়ে বেশি কিছুই নয়, সুতরাং এগুলিতে ডেটা বা কোড থাকতে পারে, আপনার মডেল করতে চান এমন তথ্য উপস্থাপন করতে পারে। আপনার যদি আরও বিশদ বিবরণ প্রয়োজন হয় তবে প্রস্তাবিত হয় যে আপনি এই প্রকাশনাগুলি প্রতিক্রিয়াতে রাজ্যের ব্যবহার এবং প্রতিক্রিয়াতে প্রপসের ব্যবহার দেখেন


1
  • প্রপস --- আপনি এর মান পরিবর্তন করতে পারবেন না।
  • বলছে --- আপনি নিজের কোডে এর মান পরিবর্তন করতে পারেন, তবে যখন রেন্ডার হয় তখন এটি সক্রিয় থাকবে।

1

প্রতিক্রিয়াতে "রাষ্ট্র" এবং "প্রপস" এর মধ্যে কিছু পার্থক্য।

নিয়ন্ত্রণের প্রতিক্রিয়া এবং রাষ্ট্রের ভিত্তিতে ডিওএম রেন্ডার করে। দুটি ধরণের উপাদান রাষ্ট্র রয়েছে: প্রপস হল সেই রাষ্ট্র যা উপাদানগুলির মধ্যে স্থানান্তর করে, এবং রাষ্ট্রটি উপাদানগুলির অভ্যন্তরীণ অবস্থা। প্রপস মূল উপাদান থেকে ডেটা স্থানান্তর করার জন্য সন্তানের উপাদানগুলিতে ব্যবহৃত হয়। উপাদানগুলির ভিতরে নিজস্ব রাজ্যও থাকে: রাষ্ট্র যা কেবলমাত্র উপাদানগুলির অভ্যন্তরে পরিবর্তিত হতে পারে।

সাধারণত নির্দিষ্ট উপাদানগুলির অবস্থা শিশু উপাদানগুলির প্রপস হতে পারে, বাচ্চাদের প্রপস প্রদান করা হবে যা মূল উপাদানগুলির রেন্ডারিং পদ্ধতির অভ্যন্তরে বর্ণিত হয়েছে


1

সাজসরঞ্জাম

  • প্রপসগুলি সন্তানের উপাদানগুলিতে ডেটা পাস করার জন্য ব্যবহার করে

  • প্রপস একটি উপাদান (শিশু উপাদান) এর বাইরে একটি মান পরিবর্তন করে

রাষ্ট্র

  • শ্রেণীর উপাদানগুলির মধ্যে রাষ্ট্রীয় ব্যবহার

  • রাষ্ট্র একটি উপাদান মধ্যে একটি মান পরিবর্তন

  • আপনি যদি পৃষ্ঠাটি রেন্ডার করেন তবে আপনি ডোম আপডেট করার জন্য সেটস্টেটকে কল করবেন (পৃষ্ঠার মান আপডেট করুন)

প্রতিক্রিয়া জানাতে রাষ্ট্রের গুরুত্বপূর্ণ ভূমিকা রয়েছে


0

প্রপসগুলি অপরিবর্তনীয় হওয়া সম্পর্কে প্রাথমিক প্রশ্নের উত্তরে, তারা সন্তানের উপাদান হিসাবে যতটা অবধি পরিবর্তনযোগ্য তবে পিতামাতার মধ্যে পরিবর্তনযোগ্য বলে বলা হয় parent


0

প্রতিক্রিয়াযুক্ত উপাদানগুলি অভ্যন্তরীণ ভেরিয়েবলগুলি পড়তে / লিখতে রাষ্ট্র ব্যবহার করে যা পরিবর্তিত / পরিবর্তিত হতে পারে উদাহরণস্বরূপ:

this.setState({name: 'Lila'})

প্রতিক্রিয়া বাছাই হ'ল বিশেষ অবজেক্ট যা প্রোগ্রামারকে প্যারেন্ট কম্পোনেন্ট থেকে শিশু উপাদানগুলিতে পরিবর্তনশীল এবং পদ্ধতিগুলি পেতে দেয়।

এটি উইন্ডোজ এবং ঘরের দরজার মতো কিছু। প্রপসগুলিও অপরিবর্তনীয় শিশু উপাদানগুলি সেগুলি পরিবর্তন / আপডেট করতে পারে না।

প্যারেন্ট কম্পোনেন্ট দ্বারা প্রপস পরিবর্তন করার সময় এমন কয়েকটি পদ্ধতি রয়েছে যা শুনতে শুনতে সহায়তা করে।


0

রাষ্ট্র এবং প্রপসগুলির মধ্যে ব্যাখ্যা সম্পর্কিত এটি আমার বর্তমান দৃষ্টিভঙ্গি

  1. রাজ্যটি আপনার উপাদানগুলির অভ্যন্তরে আপনার স্থানীয় পরিবর্তনকের মতো। আপনি সেট স্টেট ব্যবহার করে রাষ্ট্রের মান হেরফের করতে পারেন। তারপরে আপনি উদাহরণস্বরূপ আপনার সন্তানের উপাদানটিকে রাষ্ট্রের মানটি দিতে পারেন।

  2. প্রপস হ'ল এমন মান যা আপনার হুডুডেক্স স্টোরের অভ্যন্তরে অবস্থিত, এটি আসলে সেই রাজ্য থেকে আসে যা রিডুসার থেকে উত্পন্ন। প্রপস থেকে মান পেতে আপনার উপাদানটি রিডেক্সের সাথে সংযুক্ত থাকতে হবে। আপনি আপনার প্রপস মানটি আপনার সন্তানের উপাদানকেও দিতে পারেন


0

সাধারণ ব্যাখ্যাটি হল: স্টেট উদাহরণস্বরূপ রঙ = "নীল" বা অ্যানিমেশন = সত্য ইত্যাদির জন্য স্থানীয় উপাদান। উপাদানগুলির স্থিতি পরিবর্তন করতে এই.সেটস্টেটটি ব্যবহার করুন। পিআরপিএস হ'ল উপাদানগুলি একে অপরের সাথে কীভাবে কথা বলে (পিতামাতার কাছ থেকে সন্তানের কাছে ডেটা প্রেরণ করে) এবং উপাদানগুলি পুনরায় ব্যবহারযোগ্য করে তোলে।


0

স্টেটটি হ'ল আপনার ডেটা, পরিবর্তনযোগ্য, প্রপস কেবলমাত্র ডেটা পড়তে হবে, সাধারণত আপনি যখন প্রপস পাস করেন আপনার ডেটা নিয়ে ইতিমধ্যে কাজ করেছেন এবং আপনার রেন্ডার করার জন্য আপনার সন্তানের উপাদান প্রয়োজন হয় বা যদি আপনার প্রপসগুলি হয় একটি কার্য সম্পাদন করার জন্য আপনি এটি কল করুন


0

রাষ্ট্রটি সত্যের উত্স, যেখানে আপনার ডেটা বাস করে। আপনি বলতে পারেন রাজ্য প্রপসের মাধ্যমে নিজেকে প্রকাশ করে।

উপাদানগুলিতে প্রপস সরবরাহ করা হ'ল যা আপনার ইউআইটিকে আপনার ডেটার সাথে সুসংগত রাখে। একটি উপাদান সত্যই একটি ফাংশন যা মার্কআপ ফিরে দেয়।

প্রদত্ত একই সাজসরঞ্জাম (প্রদর্শনে জন্য ডেটা) এটা সবসময় উত্পাদন করা হবে একই মার্কআপ

প্রপসগুলি সেই পাইপলাইনগুলির মতো যা উত্স থেকে কার্যকরী উপাদানগুলিতে ডেটা বহন করে।


0

প্রপস: "কেবল পঠনযোগ্য" ডেটা উপস্থাপন করে যা অপরিবর্তনীয় এবং পিতামাতার উপাদানগুলির বৈশিষ্ট্যগুলি উল্লেখ করে।

স্থিতি : পরিবর্তনীয় ডেটা উপস্থাপন করে, যা শেষ পর্যন্ত পৃষ্ঠায় যা রেন্ডার করা হয় এবং উপাদানটি নিজে থেকেই অভ্যন্তরীণভাবে পরিচালিত হয় তা ব্যবহার করে এবং ব্যবহারকারী ইনপুটের কারণে অতিরিক্ত সময় পরিবর্তন করে।


1
সেখানে কি মাত্র 1 জন? এবং 1 কন
জিউসের বই

0

মূল পার্থক্য হ'ল রাষ্ট্রটি কোনও উপাদানটির ব্যক্তিগত হয় এবং কেবলমাত্র সেই উপাদানটির ভিতরে পরিবর্তন করা যায় যখন প্রপস কেবল স্থির মান এবং সন্তানের উপাদানগুলির মূল কী যা প্যারেন্ট উপাদানগুলির মধ্য দিয়ে যায় এবং সন্তানের উপাদানগুলির মধ্যে পরিবর্তন করা যায় না

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