হুক ব্যবহার করা
হুকগুলি 16.8.0 এ প্রবর্তিত হয়েছিল তাই নিম্নলিখিত কোডটির ন্যূনতম সংস্করণ 16.8.0 প্রয়োজন (শ্রেণীর উপাদানগুলির উদাহরণের জন্য ডাউন স্ক্রোল করুন)। কোডস্যান্ডবক্স ডেমো
1. গতিশীল প্রসঙ্গের জন্য প্যারেন্ট রাষ্ট্র নির্ধারণ করা
প্রথমত, গতিশীল প্রসঙ্গে যা গ্রাহকদের কাছে দেওয়া যেতে পারে, আমি পিতামাতার রাজ্যটি ব্যবহার করব। এটি নিশ্চিত করে যে আমি সত্যের একক উত্স সামনে চলেছি। উদাহরণস্বরূপ, আমার প্যারেন্ট অ্যাপটি এর মতো দেখতে পাবেন:
const App = () => {
const [language, setLanguage] = useState("en");
const value = { language, setLanguage };
return (
...
);
};
languageরাষ্ট্র মধ্যে সংরক্ষিত হয়। আমরা উভয় languageএবং সেটার ফাংশন setLanguageপরে প্রসঙ্গে হবে।
২. একটি প্রসঙ্গ তৈরি করা
এরপরে, আমি এর মতো একটি ভাষা প্রসঙ্গ তৈরি করেছি:
const LanguageContext = React.createContext({
language: "en",
setLanguage: () => {}
});
এখানে আমি language('এন') এর জন্য ডিফল্ট এবং একটি setLanguageফাংশন সেট করছি যা প্রসঙ্গ সরবরাহকারীর মাধ্যমে ভোক্তার কাছে প্রেরণ করা হবে। এগুলি কেবলমাত্র ডিফল্ট এবং প্যারেন্টে সরবরাহকারীর উপাদান ব্যবহার করার সময় আমি তাদের মানগুলি সরবরাহ করব App।
দ্রষ্টব্য: LanguageContextআপনি একই কিনা
৩. প্রসঙ্গ ভোক্তা তৈরি করা
ভাষা পরিবর্তনকারীটি ভাষা সেট করার জন্য, এটি প্রসঙ্গের মাধ্যমে ভাষা সেটার ফাংশনে অ্যাক্সেস থাকা উচিত। এটি এর মতো কিছু দেখতে পারে:
const LanguageSwitcher = () => {
const { language, setLanguage } = useContext(LanguageContext);
return (
<button onClick={() => setLanguage("jp")}>
Switch Language (Current: {language})
</button>
);
};
এখানে আমি ভাষাটি 'জেপি' তে সেট করছি তবে এর জন্য ভাষা নির্ধারণ করতে আপনার নিজের যুক্তি থাকতে পারে।
৪. কোনও সরবরাহকারীকে গ্রাহককে মুড়িয়ে দেওয়া
এখন আমি আমার ভাষা পরিবর্তনকারী উপাদানটি একটিতে রেন্ডার করব LanguageContext.Providerএবং যে মানগুলিকে প্রসঙ্গের মাধ্যমে গভীরতর কোনও প্রান্তে প্রেরণ করতে হবে তা পাস করব। এখানে আমার পিতামাতার Appচেহারা কেমন:
const App = () => {
const [language, setLanguage] = useState("en");
const value = { language, setLanguage };
return (
<LanguageContext.Provider value={value}>
<h2>Current Language: {language}</h2>
<p>Click button to change to jp</p>
<div>
{/* Can be nested */}
<LanguageSwitcher />
</div>
</LanguageContext.Provider>
);
};
এখন, যখনই ভাষা পরিবর্তনকারী ক্লিক করা হয় এটি প্রসঙ্গটি পরিবর্তনশীলভাবে আপডেট করে।
কোডস্যান্ডবক্স ডেমো
বর্গ উপাদান ব্যবহার
সর্বশেষতম কনটেক্স এপিআই 16.3 এর প্রতিক্রিয়াতে প্রবর্তিত হয়েছিল যা গতিশীল প্রসঙ্গে থাকার দুর্দান্ত উপায় সরবরাহ করে। নিম্নলিখিত কোডটির সর্বনিম্ন সংস্করণ 16.3.0 প্রয়োজন। কোডস্যান্ডবক্স ডেমো
1. গতিশীল প্রসঙ্গের জন্য প্যারেন্ট রাষ্ট্র নির্ধারণ করা
প্রথমত, গতিশীল প্রসঙ্গে যা গ্রাহকদের কাছে দেওয়া যেতে পারে, আমি পিতামাতার রাজ্যটি ব্যবহার করব। এটি নিশ্চিত করে যে আমি সত্যের একক উত্স সামনে চলেছি। উদাহরণস্বরূপ, আমার প্যারেন্ট অ্যাপটি এর মতো দেখতে পাবেন:
class App extends Component {
setLanguage = language => {
this.setState({ language });
};
state = {
language: "en",
setLanguage: this.setLanguage
};
...
}
languageএকটি ভাষা সেটার পদ্ধতি, যা আপনি রাষ্ট্র গাছ বাহিরে রাখতে পারে সহ রাষ্ট্র মধ্যে সংরক্ষিত হয়।
২. একটি প্রসঙ্গ তৈরি করা
এরপরে, আমি এর মতো একটি ভাষা প্রসঙ্গ তৈরি করেছি:
const LanguageContext = React.createContext({
language: "en",
setLanguage: () => {}
});
এখানে আমি language('এন') এর জন্য ডিফল্ট এবং একটি setLanguageফাংশন সেট করছি যা প্রসঙ্গ সরবরাহকারীর মাধ্যমে ভোক্তার কাছে প্রেরণ করা হবে। এগুলি কেবলমাত্র ডিফল্ট এবং প্যারেন্টে সরবরাহকারীর উপাদান ব্যবহার করার সময় আমি তাদের মানগুলি সরবরাহ করব App।
৩. প্রসঙ্গ ভোক্তা তৈরি করা
ভাষা পরিবর্তনকারীটি ভাষা সেট করার জন্য, এটি প্রসঙ্গের মাধ্যমে ভাষা সেটার ফাংশনে অ্যাক্সেস থাকা উচিত। এটি এর মতো কিছু দেখতে পারে:
class LanguageSwitcher extends Component {
render() {
return (
<LanguageContext.Consumer>
{({ language, setLanguage }) => (
<button onClick={() => setLanguage("jp")}>
Switch Language (Current: {language})
</button>
)}
</LanguageContext.Consumer>
);
}
}
এখানে আমি ভাষাটি 'জেপি' তে সেট করছি তবে এর জন্য ভাষা নির্ধারণ করতে আপনার নিজের যুক্তি থাকতে পারে।
৪. কোনও সরবরাহকারীকে গ্রাহককে মুড়িয়ে দেওয়া
এখন আমি আমার ভাষা পরিবর্তনকারী উপাদানটি একটিতে রেন্ডার করব LanguageContext.Providerএবং যে মানগুলিকে প্রসঙ্গের মাধ্যমে গভীরতর কোনও প্রান্তে প্রেরণ করতে হবে তা পাস করব। এখানে আমার পিতামাতার Appচেহারা কেমন:
class App extends Component {
setLanguage = language => {
this.setState({ language });
};
state = {
language: "en",
setLanguage: this.setLanguage
};
render() {
return (
<LanguageContext.Provider value={this.state}>
<h2>Current Language: {this.state.language}</h2>
<p>Click button to change to jp</p>
<div>
{/* Can be nested */}
<LanguageSwitcher />
</div>
</LanguageContext.Provider>
);
}
}
এখন, যখনই ভাষা পরিবর্তনকারী ক্লিক করা হয় এটি প্রসঙ্গটি পরিবর্তনশীলভাবে আপডেট করে।
কোডস্যান্ডবক্স ডেমো