Junior
როგორ შევცვალოთ სწორად React-ის კომპონენტების მდგომარეობა?
sobes.tech AI
პასუხი AI-სგან
React-এ অৱস্থা পৰিৱৰ্তন setState পদ্ধতিৰ জৰিয়তে ক্লাছ কম্পোনেণ্টৰ বাবে বা useState হুকৰ মাধ্যমে কাৰ্যকৰী কম্পোনেণ্টৰ বাবে হয়।
ক্লাছ কম্পোনেণ্টসমূহ:
// React আমদানি কৰা
import React, { Component } from 'react';
// ক্লাছ কম্পোনেণ্ট সৃষ্টি কৰা
class MyComponent extends Component {
// অৱস্থা আৰম্ভ কৰা
constructor(props) {
super(props);
this.state = {
count: 0
};
}
// অৱস্থা পৰিৱৰ্তনৰ পদ্ধতি
incrementCount = () => {
// `setState` ব্যৱহাৰ
this.setState({ count: this.state.count + 1 });
};
render() {
return (
<div>
<p>কাউণ্টাৰ: {this.state.count}</p>
<button onClick={this.incrementCount}>বৃদ্ধি কৰক</button>
</div>
);
}
}
// কম্পোনেণ্ট এক্সপোর্ট কৰা
export default MyComponent;
setStateএচিন্ৰোন।setStateনতুন অৱস্থাক বৰ্তমানৰ সৈতে সংযুক্ত কৰে (shallow merge)।setStateফাংচন গ্ৰহণ কৰিব পাৰে, যি আগৰ ওপৰত আধাৰিত নতুন অৱস্থা উভতাই:
// ফাংচন ব্যৱহাৰ কৰি অৱস্থা পৰিৱৰ্তন
incrementCountFunction = () => {
this.setState((prevState) => ({
count: prevState.count + 1
}));
};
কাৰ্যকৰী কম্পোনেণ্টসমূহ (useState-ৰ ব্যৱহাৰে):
// React আৰু useState আমদানি কৰা
import React, { useState } from 'react';
// কাৰ্যকৰী কম্পোনেণ্ট সৃষ্টি কৰা
function MyFunctionComponent() {
// `useState` ব্যৱহাৰ কৰি অৱস্থা আৰম্ভ কৰা
const [count, setCount] = useState(0); // [বৰ্তমান অৱস্থা, আপডেট কৰাৰ ফাংচন]
// অৱস্থা পৰিৱৰ্তনৰ ফাংচন
const incrementCount = () => {
// আপডেট ফাংচন ব্যৱহাৰ
setCount(count + 1);
};
return (
<div>
<p>কাউণ্টাৰ: {count}</p>
<button onClick={incrementCount}>বৃদ্ধি কৰক</button>
</div>
);
}
// কম্পোনেণ্ট এক্সপোর্ট কৰা
export default MyFunctionComponent;
useStateএ দুটা উপাদানৰ এৰে়ৰূপে উভতাই: বৰ্তমান অৱস্থা আৰু ইয়াক আপডেট কৰাৰ ফাংচন।useState-ৰ পৰা উভতোৱা আপডেট ফাংচন বৰ্তমান অৱস্থা বদলাব, একত্রীকৰণ নকৰে।- আপডেট ফাংচনলৈ ফাংচন প্ৰদান কৰিব পাৰি, যদি নতুন অৱস্থা আগৰ ওপৰত নিৰ্ভৰ কৰে:
// আগৰ ওপৰত নিৰ্ভৰশীল অৱস্থা পৰিৱৰ্তন ফাংচন
const incrementCountFunction = () => {
setCount(prevCount => prevCount + 1);
};
অৱস্থা পৰিৱৰ্তনৰ সময়ত গুৰুত্বপূর্ণ বিষয়সমূহ:
- অৱস্থা সোজাসুজি পৰিবৰ্তন নকৰিব: কেতিয়াও
stateগুণৰ নতুন মান সোজাসুজি নিযুক্তি নিদিব (উদাহৰণস্বৰূপ,this.state.count = 5বাcount = 5)। React এই পৰিবৰ্তন লক্ষ্য নকৰে আৰু কম্পোনেণ্ট পুনৰ ৰেণ্ডাৰ নহ'ব। - অবজেক্ট আৰু এৰে়ৰ পৰিবৰ্তন: অৱজেক্ট বা এৰে়ত পৰিবৰ্তন কৰিলে, সদায় নতুন কপি সৃষ্টি কৰক। React ৰেফাৰেঞ্চসমূহ তুলনা কৰে, আৰু যদি ৰেফাৰেঞ্চ পৰিবৰ্তন নহয়, React ধৰে যে ডাটা পৰিবৰ্তন হোৱা নাই আৰু পুনৰ ৰেণ্ডাৰ নকৰে।
// ক্লাছ কম্পোনেণ্টত অবজেক্ট পৰিবৰ্তন
this.setState(prevState => ({
user: {
...prevState.user, // পুৰণি গুণসমূহ কপি
name: 'নতুন নাম' // প্ৰয়োজনীয় গুণ আপডেট
}
}));
// কাৰ্যকৰী কম্পোনেণ্টত এৰে় পৰিবৰ্তন
setItems(prevItems => [...prevItems, 'নতুন উপাদান']); // নতুন উপাদান যোগ কৰা
setState-ৰ এচিন্ৰোনাসনতা: যদি আপুনি কামনা কৰে যে অৱস্থা আপডেট হোৱাৰ পাছত আৰু কম্পোনেণ্ট পুনৰ ৰেণ্ডাৰ হোৱাৰ পাছত কাৰ্য্য সম্পন্ন হ'ব,setState-ৰ দ্বিতীয় আৰ্গুমেণ্ট (callback) বাuseEffecthook ব্যৱহাৰ কৰক।
// `setState`-ত callback
this.setState({ count: this.state.count + 1 }, () => {
console.log('অৱস্থা আপডেট হৈছে!');
});
// `useEffect`-ৰ মাধ্যমে অৱস্থা পৰিবৰ্তনক প্ৰতিক্ৰিয়া কৰা
useEffect(() => {
console.log('Count পৰিবৰ্তিত:', count);
}, [count]); // নিৰ্ভৰশীলতা: `count`-ৰ পৰিবৰ্তনত hook চলিব
পদ্ধতিসমূহৰ তুলনা:
| বৈশিষ্ট্য | ক্লাছ কম্পোনেণ্ট (setState) |
কাৰ্যকৰী কম্পোনেণ্ট (useState) |
|---|---|---|
| সিনট্যাক্স | this.setState(newState[, callback]) |
const [state, setState] = useState(initialState) hook |
| একত্রীকৰণ/অপডেট | নতুন অৱস্থাক চলমানৰ সৈতে একত্রীকৰণ (shallow merge) | নতুন অৱস্থা পূৰ্ণৰূপে প্ৰতিস্থাপন কৰে |
| এচিন্ৰোনাসন | এচিন্ৰোন | ফাংশন আপডেট এচিন্ৰোন, React ৰেণ্ডাৰ ফেজত থাকিলে, সিঁচ্ৰোন |
| আগৰ অৱস্থাৰ ওপৰত নিৰ্ভৰশীলতা | setState-ত ফাংশন প্ৰদান: this.setState(prevState => ({...})) |
আপডেট ফাংশনলৈ ফাংশন প্ৰদান: setState(prev => ({...})) |