উপাদানগুলি যোগাযোগ করার একাধিক উপায় রয়েছে। কিছু আপনার ব্যবহারের জন্য উপযুক্ত হতে পারে। আমি জেনে দরকারী বলে মনে করেছি তার একটি তালিকা এখানে।
প্রতিক্রিয়া
পিতামাতার / শিশু সরাসরি যোগাযোগ
const Child = ({fromChildToParentCallback}) => (
<div onClick={() => fromChildToParentCallback(42)}>
Click me
</div>
);
class Parent extends React.Component {
receiveChildValue = (value) => {
console.log("Parent received value from child: " + value); // value is 42
};
render() {
return (
<Child fromChildToParentCallback={this.receiveChildValue}/>
)
}
}
এখানে সন্তানের উপাদানটি একটি মান সহ পিতামাতার প্রদত্ত কলব্যাককে কল করবে এবং পিতামাতারা পিতামাতার মধ্যে বাচ্চাদের দ্বারা সরবরাহিত মানটি পেতে সক্ষম হবেন।
আপনি আপনার অ্যাপ্লিকেশন এর একটি বৈশিষ্ট্য / পৃষ্ঠা তৈরী করেছি, এটা callbacks / রাজ্য (নামেও পরিচালনার একটি একক পিতা বা মাতা না থাকাই ভাল ছিল container
বা smart component
), এবং সব সন্তানের আড়ম্বরহীন হতে, শুধুমাত্র পিতা বা মাতা জিনিস প্রতিবেদন। এইভাবে আপনি যে কোনও সন্তানের প্রয়োজনের সাথে পিতামাতার অবস্থা সহজেই "ভাগ" করতে পারেন।
প্রসঙ্গ
প্রসঙ্গটি আপনার উপাদান স্তরক্রমের মূলে অবস্থান ধরে রাখার অনুমতি দেয় এবং প্রতিটি মধ্যবর্তী উপাদানগুলিতে প্রসেসগুলি ছাড়তে কোনও ঝামেলা ছাড়াই খুব সহজেই খুব গভীরভাবে বাসাযুক্ত উপাদানগুলিতে এই রাজ্যটিকে সহজেই ইনজেক্ট করতে সক্ষম হন।
এখন অবধি, প্রসঙ্গটি একটি পরীক্ষামূলক বৈশিষ্ট্য ছিল, তবে একটি নতুন এপিআই উপলব্ধ 16.3 এর প্রতিক্রিয়াতে।
const AppContext = React.createContext(null)
class App extends React.Component {
render() {
return (
<AppContext.Provider value={{language: "en",userId: 42}}>
<div>
...
<SomeDeeplyNestedComponent/>
...
</div>
</AppContext.Provider>
)
}
};
const SomeDeeplyNestedComponent = () => (
<AppContext.Consumer>
{({language}) => <div>App language is currently {language}</div>}
</AppContext.Consumer>
);
গ্রাহক রেন্ডার প্রপ / শিশুদের ফাংশন প্যাটার্নটি ব্যবহার করছেন
এই ব্লগ পোস্ট চেক করুনআরও তথ্যের জন্য করুন।
16.3 প্রতিক্রিয়া দেওয়ার আগে, আমি প্রতিক্রিয়া-সম্প্রচার ব্যবহার করার পরামর্শ দেব যা বেশ অনুরূপ এপিআই দেয়, এবং প্রাক্তন প্রসঙ্গের এপিআই ব্যবহার করে।
পোর্টাল
সাধারণ পিতা বা মাতার / সন্তানের মতো সাধারণ ফাংশনগুলির সাথে তাদের যোগাযোগ করার জন্য আপনি 2 টি উপাদান একসাথে রাখতে চাইলে একটি পোর্টাল ব্যবহার করুন তবে আপনি চান না যে এই 2 উপাদানগুলি ডিওমে পিতামাতার / সন্তানের সম্পর্ক রাখুক, কারণ ভিজ্যুয়াল / সিএসএস সীমাবদ্ধতার দ্বারা এটি বোঝায় (জেড-ইনডেক্স, অস্বচ্ছতার মতো ...)।
এই ক্ষেত্রে আপনি একটি "পোর্টাল" ব্যবহার করতে পারেন। পোর্টাল ব্যবহার করে বিভিন্ন প্রতিক্রিয়া পাঠাগার রয়েছে , সাধারণত মডেলের জন্য ব্যবহৃত হয় , পপআপ, টুলটিপ্সে ...
নিম্নোক্ত বিবেচনা কর:
<div className="a">
a content
<Portal target="body">
<div className="b">
b content
</div>
</Portal>
</div>
ভিতরে রেন্ডার করা হলে নিম্নলিখিত ডোম তৈরি করতে পারে reactAppContainer
:
<body>
<div id="reactAppContainer">
<div className="a">
a content
</div>
</div>
<div className="b">
b content
</div>
</body>
আরও বিশদ এখানে
স্লট মেশিন
আপনি কোথাও একটি স্লট সংজ্ঞায়িত করেছেন, এবং তারপরে আপনি আপনার রেন্ডার গাছের অন্য জায়গা থেকে স্লটটি পূরণ করুন।
import { Slot, Fill } from 'react-slot-fill';
const Toolbar = (props) =>
<div>
<Slot name="ToolbarContent" />
</div>
export default Toolbar;
export const FillToolbar = ({children}) =>
<Fill name="ToolbarContent">
{children}
</Fill>
এটি আপনার পোর্টালগুলির সাথে কিছুটা সমান যেমন আপনি যে সংজ্ঞায়িত করেছেন সেই স্লটে রেন্ডার করা হবে, যখন পোর্টালগুলি সাধারণত একটি নতুন ডোম নোড রেন্ডার করে (প্রায়শই ডকুমেন্ট.বৌদের একটি শিশু) re
চেক প্রতিক্রিয়া-স্লট পূরণ গ্রন্থাগার
ইভেন্ট বাস
প্রতিক্রিয়া নথি হিসাবে বলা হয়েছে :
পিতা-সন্তানের সম্পর্ক নেই এমন দুটি উপাদানগুলির মধ্যে যোগাযোগের জন্য, আপনি নিজের বৈশ্বিক ইভেন্ট সিস্টেম সেট আপ করতে পারেন। কম্পোনেন্টডিডমাউন্ট () এর ইভেন্টগুলিতে সাবস্ক্রাইব করুন, কম্পোনেন্ট উইলউনমাউন্ট () এ সাবস্ক্রাইব করুন, এবং আপনি যখন কোনও ইভেন্ট পাবেন তখন সেটস্টেট () কল করুন।
ইভেন্ট বাস সেটআপ করতে আপনি ব্যবহার করতে পারেন এমন অনেকগুলি জিনিস রয়েছে। আপনি কেবল শ্রোতার একটি অ্যারে তৈরি করতে পারেন এবং ইভেন্ট প্রকাশের সময় সমস্ত শ্রোতা ইভেন্টটি গ্রহণ করবে। অথবা আপনি ইভেন্টেমিটার বা ডাকটেল এর মতো কিছু ব্যবহার করতে পারেন
সর্দি
ফ্ল্যাক্স মূলত ইভেন্টের বাস, ইভেন্ট রিসিভারের দোকানগুলি বাদে। প্রতিক্রিয়া ছাড়াই রাজ্য পরিচালিত ব্যতীত এটি বেসিক ইভেন্ট বাস সিস্টেমের মতো
আসল ফ্লাক্স বাস্তবায়ন হ্যাকি উপায়ে ইভেন্ট-সোর্সিং করার প্রয়াসের মতো দেখায়।
রেডাক্স আমার জন্য ফ্লাক্স বাস্তবায়ন যা ইভেন্ট-সোর্সিংয়ের থেকে নিকটতম, সময়-ভ্রমণের ক্ষমতার মতো ইভেন্ট-সোর্সিং সুবিধার অনেকগুলি উপকার করে। এটি প্রতিক্রিয়াটির সাথে কঠোরভাবে লিঙ্কযুক্ত নয় এবং অন্যান্য কার্যকরী ভিউ লাইব্রেরির সাথেও এটি ব্যবহার করা যেতে পারে।
এগহেডের রেডাক্স ভিডিও টিউটোরিয়ালটি দুর্দান্ত and
এক্সিকিউটেবল-এর পাথ
কার্সার ক্লোজার স্ক্রিপ্ট / ওম থেকে আসছে এবং প্রতিক্রিয়া প্রকল্পগুলিতে বহুল ব্যবহৃত হচ্ছে। তারা প্রতিক্রিয়াটির বাইরে রাজ্যটি পরিচালনা করার অনুমতি দেয় এবং একাধিক উপাদানকে রাজ্যের একই অংশে পড়তে / লেখার অ্যাক্সেস দিতে দেয়, উপাদান গাছ সম্পর্কে কিছু জানতে প্রয়োজন না করে।
ইমটুটেবল জেএস , রিএ্যাক্ট-কার্সার এবং সর্বজ্ঞানী সহ অনেকগুলি বাস্তবায়ন বিদ্যমান
২০১ Edit সম্পাদনা করুন : দেখে মনে হচ্ছে লোকে ছোট অ্যাপ্লিকেশনগুলির জন্য কার্সারকে ভাল কাজ করতে রাজি হয়েছে তবে জটিল অ্যাপ্লিকেশনগুলিতে এটি ভাল স্কেল করে না। ওম নেক্সটে আর কার্সার নেই (যদিও এটি ওম যা ধারণাটি প্রাথমিকভাবে প্রবর্তন করেছিল)
এলম আর্কিটেকচার
এলম স্থাপত্য এমন একটি নির্মাণ দ্বারা ব্যবহার করা হবে প্রস্তাব করা হয় এলম ভাষা । এমনকি যদি এলাম রিএ্যাকটিজেএস না হয় তবে এলমের আর্কিটেকচারটিও প্রতিক্রিয়াতে করা যেতে পারে।
রেডাক্সের লেখক ড্যান আব্রামভ রিএ্যাক্ট ব্যবহার করে এলম স্থাপত্যের একটি বাস্তবায়ন করেছিলেন।
রেডাক্স এবং এলম উভয়ই দুর্দান্ত এবং প্রান্তে ইভেন্ট-সোর্সিং ধারণাগুলি শক্তিশালী করার ঝোঁক, উভয়ই সময়-ভ্রমণের ডিবাগিং, পূর্বাবস্থায় / পুনরায়, পুনরায় খেলতে ...
রেডাক্স এবং এলমের মধ্যে প্রধান পার্থক্য হ'ল এলম রাষ্ট্র পরিচালনার বিষয়ে অনেক বেশি কঠোর হতে থাকে। এলমে আপনার স্থানীয় উপাদান রাষ্ট্র বা মাউন্ট / আনমাউন্ট হুক থাকতে পারে না এবং সমস্ত ডিওএম পরিবর্তন অবশ্যই বিশ্বব্যাপী রাষ্ট্র পরিবর্তন দ্বারা ট্রিগার করা উচিত। এলম আর্কিটেকচার একটি স্কেলযোগ্য পদ্ধতির প্রস্তাব দেয় যা সমস্ত রাজ্যকে একক অপরিবর্তনীয় বস্তুর অভ্যন্তরে পরিচালিত করার অনুমতি দেয় , যখন রেডাক্স এমন একটি পদ্ধতির প্রস্তাব দেয় যা আপনাকে একক অবিচ্ছিন্ন অবজেক্টে রাষ্ট্রের সর্বাধিক পরিচালনা করতে আমন্ত্রণ জানায় ।
যদিও এলমের ধারণাগত মডেলটি খুব মার্জিত এবং আর্কিটেকচারটি বড় অ্যাপ্লিকেশনগুলিতে ভাল স্কেল করার অনুমতি দেয়, এটি কার্যকরীভাবে কঠিন হতে পারে বা মাউন্ট করার পরে কোনও ইনপুটকে ফোকাস দেওয়া বা বিদ্যমান লাইব্রেরির সাথে একীকরণের মতো সহজ কাজগুলি অর্জন করতে আরও বেশি বয়লারপ্লেট জড়িত হতে পারে can একটি অপরিহার্য ইন্টারফেস (অর্থাত্ জিকুয়েরি প্লাগইন) সহ। সম্পর্কিত সমস্যা ।
এছাড়াও, এলম আর্কিটেকচারে আরও কোড বয়লারপ্লেট জড়িত। এটি ভার্বোজ বা লিখতে জটিল নয় তবে আমি মনে করি এলম আর্কিটেকচারটি স্ট্যাটিকালি টাইপ করা ভাষাগুলির চেয়ে বেশি উপযুক্ত।
এফআরপি
আরএক্সজেএস, ব্যাকনজেএস বা কেফিরের মতো লাইব্রেরিগুলি উপাদানগুলির মধ্যে যোগাযোগ পরিচালনা করতে এফআরপি স্ট্রিম উত্পাদন করতে ব্যবহার করা যেতে পারে।
আপনি উদাহরণস্বরূপ আরএক্স-প্রতিক্রিয়া চেষ্টা করতে পারেন
আমার মনে হয় এই লিব ব্যবহার বেশ কি ELM ভাষা অফার ব্যবহার অনুরূপ সংকেত ।
সাইকেলজেএস ফ্রেমওয়ার্কটি রিঅ্যাক্টজেএস ব্যবহার করে না তবে ভোম ব্যবহার করে । এটি এলম আর্কিটেকচারের সাথে অনেক মিল রয়েছে (তবে বাস্তব জীবনে এটি ব্যবহার করা আরও সহজ কারণ এটি ভোম হুককে অনুমতি দেয়) এবং এটি ফাংশনগুলির পরিবর্তে আরএক্সজেগুলি ব্যাপকভাবে ব্যবহার করে এবং আপনি যদি এফআরপি ব্যবহার করতে চান তবে অনুপ্রেরণার একটি ভাল উত্স হতে পারে প্রতিক্রিয়া। সাইকেলজ এগহেড ভিডিওগুলি কীভাবে এটি কাজ করে তা বুঝতে সুন্দর।
সিএসপি
সিএসপি (যোগাযোগের ক্রমযুক্ত প্রক্রিয়াগুলি) বর্তমানে জনপ্রিয় (বেশিরভাগ গো / গোরাউটাইনস এবং কোর.সেসেক / ক্লোজার স্ক্রিপ্টের কারণে) তবে আপনি এগুলিকে জেএস-সিএসপির সাহায্যে জাভাস্ক্রিপ্টেও ব্যবহার করতে পারেন ।
জেমস লং কীভাবে প্রতিক্রিয়ার মাধ্যমে এটি ব্যবহার করা যায় তা ব্যাখ্যা করে একটি ভিডিও করেছেন ।
কাহিনীগুলি
একটি কাহিনী একটি ব্যাকএন্ড ধারণা যা ডিডিডি / ইভেন্টসোর্সিং / সিকিউআরএস বিশ্ব থেকে আসে, এটি "প্রক্রিয়া পরিচালক "ও বলে। এটি রিডেক্স-সাগা প্রকল্প দ্বারা জনপ্রিয় করা হচ্ছে , বেশিরভাগ পার্শ্ব-প্রতিক্রিয়াগুলি (যেমন এপিআই কল ইত্যাদি) পরিচালনা করার জন্য রিডেক্স-থাঙ্কের প্রতিস্থাপন হিসাবে। বেশিরভাগ লোকেরা বর্তমানে এটি কেবলমাত্র পার্শ্ব-প্রতিক্রিয়াগুলির জন্যই পরিষেবা বলে মনে করে তবে এটি উপাদানগুলি ডিকপলিংয়ের বিষয়ে আরও বেশি।
এটি সম্পূর্ণ নতুন যোগাযোগ ব্যবস্থার চেয়ে ফ্লাক্স আর্কিটেকচারের (বা রেডাক্স) আরও প্রশংসা, কারণ সাগা শেষে ফ্লাক্স ক্রিয়া নির্গত করে। ধারণাটিটি হ'ল যদি আপনার কাছে উইজেট 1 এবং উইজেট 2 থাকে এবং আপনি তাদের ডিকপল করতে চান তবে আপনি উইজেট 1 থেকে উইজেট 2 টার্গেট করে অ্যাকশন বন্ধ করতে পারবেন না। সুতরাং আপনি উইজেট 1 কেবলমাত্র আগুনের ক্রিয়া করেন যা নিজেরাই লক্ষ্য করে, এবং কাহিনীটি একটি "পটভূমি প্রক্রিয়া" যা উইজেট 1 ক্রিয়াকলাপ শোনায় এবং উইজেট 2 কে লক্ষ্য করে এমন ক্রিয়া প্রেরণ করতে পারে। সাগা হ'ল 2 টি উইজেটের মধ্যে সংযুক্তির বিন্দু তবে উইজেটগুলি decoupled থাকে।
আপনি যদি আগ্রহী হন তবে আমার উত্তরটি একবার দেখুন
উপসংহার
আপনি যদি এই বিভিন্ন স্টাইল ব্যবহার করে একই ছোট অ্যাপের উদাহরণ দেখতে চান তবে এই সংগ্রহস্থলের শাখাগুলি পরীক্ষা করে দেখুন ।
আমি জানি না দীর্ঘমেয়াদে সর্বোত্তম বিকল্পটি কী তবে আমি সত্যিই পছন্দ করি যে কীভাবে ফ্লাক্স ইভেন্ট-সোর্সিংয়ের মতো দেখাচ্ছে।
আপনি যদি ইভেন্ট-সোর্সিং ধারণাগুলি জানেন না, তবে এই খুব শিক্ষাগত ব্লগটি একবার দেখুন: অ্যাপাচি সামজার সাথে ডাটাবেসটির ভিতরে ঘুরিয়ে দেওয়া , কেন ফ্লাক্স চমৎকার তা বুঝতে হবে (তবে এটি এফআরপি-তেও প্রয়োগ হতে পারে) )
আমি মনে করি সম্প্রদায়টি সম্মত হয় যে সবচেয়ে প্রতিশ্রুতিবদ্ধ ফ্লাক্স বাস্তবায়ন হ'ল রেডাক্স , যা উত্তপ্তভাবে পুনরায় লোডিংয়ের জন্য খুব উত্পাদনশীল বিকাশকারীকে অভিজ্ঞতার অনুমতি দেবে। প্রিন্সিপাল ভিডিওতে চিত্তাকর্ষক লাইভকডিং আলা ব্রেট ভিক্টরের আবিষ্কার সম্ভব!