Skip to content

Commit 15cb3da

Browse files
committed
fix: update useMemo translation
1 parent a3619e2 commit 15cb3da

1 file changed

Lines changed: 16 additions & 22 deletions

File tree

src/content/reference/react/useMemo.md

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ console.timeEnd('filter array');
151151
- আপনি এটি একটি কম্পোনেন্টকে প্রপ হিসেবে পাস করেন যা [`memo`.](/reference/react/memo). দ্বারা মোড়ানো। মান যদি অপরিবর্তিত থাকে তাহলে আপনি কি-রেন্ডারিং এড়াতে চান। মেমোইজেশন আপনার কম্পোনেন্টকে শুধুমাত্র তখন রি-রেন্ডার করতে দেয় যখন ডিপেন্ডেন্সিসগুলি একই নয়।
152152
- আপনি যে মানটি পাস করছেন তা পরবর্তীতে কোনো হুকের নির্ভরতা হিসেবে ব্যবহৃত হয়। উদাহরণস্বরূপ, হয়তো অন্য একটি `useMemo` calculation এর মান এটির উপর নির্ভর করে। অথবা হয়তো আপনি এই মানটির উপর [`useEffect.`](/reference/react/useEffect). থেকে নির্ভর করছেন।
153153

154-
অন্য ক্ষেত্রে, `useMemo` ব্যবহার করে কোনো calculation মোড়ানোর কোনো সুবিধা নেই। তবে করার ফলে কোনো গুরুতর ক্ষতি হয় না, তাই কিছু টিম প্রতিটি ক্ষেত্রে আলাদাভাবে চিন্তা না করে যতটা সম্ভব মেমোইজ করে। এই পদ্ধতির অসুবিধা হল কোড কম পাঠযোগ্য হয়। এছাড়া, সব মেমোইজেশন কার্যকর নয়: সর্বদা নতুন একটি একক মান পুরো কম্পোনেন্টের জন্য মেমোইজেশন ব্যর্থ করতে পারে।
154+
অন্য ক্ষেত্রে, `useMemo` ব্যবহার করে কোনো calculation মোড়ানোর কোনো সুবিধা নেই। তবে করার ফলে কোনো গুরুতর ক্ষতি হয় না, তাই কিছু টিম প্রতিটি ক্ষেত্রে আলাদাভাবে চিন্তা না করে যতটা সম্ভব মেমোইজ করে। এই পদ্ধতির অসুবিধা হল কোড কম পাঠযোগ্য হয়। এছাড়া, সব মেমোইজেশন কার্যকর নয়: "সর্বদা নতুন" একটি একক মান পুরো কম্পোনেন্টের জন্য মেমোইজেশন ব্যর্থ করতে পারে।
155155

156156
**বাস্তবে, কিছু নীতি অনুসরণ করে আপনি অনেক মেমোইজেশন অপ্রয়োজনীয় করে তুলতে পারেন:**
157157

@@ -1056,12 +1056,9 @@ label {
10561056

10571057
---
10581058

1059-
<<<<<<< HEAD
1060-
### অন্য হুকের ডিপেন্ডেন্সিস মেমোইজ করা {/*memoizing-a-dependency-of-another-hook*/}
1061-
=======
1062-
### Preventing an Effect from firing too often {/*preventing-an-effect-from-firing-too-often*/}
1059+
### Effect এর অত্যধিক ফায়ার করা প্রতিরোধ করা {/*preventing-an-effect-from-firing-too-often*/}
10631060

1064-
Sometimes, you might want to use a value inside an [Effect:](/learn/synchronizing-with-effects)
1061+
কখনও কখনও, আপনি একটি [Effect](/learn/synchronizing-with-effects) এর ভিতরে একটি value ব্যবহার করতে চাইতে পারেন:
10651062

10661063
```js {4-7,10}
10671064
function ChatRoom({ roomId }) {
@@ -1078,19 +1075,18 @@ function ChatRoom({ roomId }) {
10781075
// ...
10791076
```
10801077
1081-
This creates a problem. [Every reactive value must be declared as a dependency of your Effect.](/learn/lifecycle-of-reactive-effects#react-verifies-that-you-specified-every-reactive-value-as-a-dependency) However, if you declare `options` as a dependency, it will cause your Effect to constantly reconnect to the chat room:
1082-
1078+
এটি একটি সমস্যা তৈরি করে। [আপনার Effect এর প্রতিটি reactive value অবশ্যই dependency হিসেবে ঘোষণা করতে হবে।](/learn/lifecycle-of-reactive-effects#react-verifies-that-you-specified-every-reactive-value-as-a-dependency) তবে, যদি আপনি `options` কে dependency হিসেবে ঘোষণা করেন, তাহলে এটি আপনার Effect কে ক্রমাগত চ্যাট রুমে পুনরায় সংযোগ করতে বাধ্য করবে:
10831079
10841080
```js {5}
10851081
useEffect(() => {
10861082
const connection = createConnection(options);
10871083
connection.connect();
10881084
return () => connection.disconnect();
1089-
}, [options]); // 🔴 Problem: This dependency changes on every render
1085+
}, [options]); // 🔴 সমস্যা: এই dependency প্রতিটি রেন্ডারে পরিবর্তিত হয়
10901086
// ...
10911087
```
10921088
1093-
To solve this, you can wrap the object you need to call from an Effect in `useMemo`:
1089+
এটি সমাধান করতে, আপনি Effect থেকে কল করার জন্য প্রয়োজনীয় object কে `useMemo` এ wrap করতে পারেন:
10941090
10951091
```js {4-9,16}
10961092
function ChatRoom({ roomId }) {
@@ -1101,42 +1097,40 @@ function ChatRoom({ roomId }) {
11011097
serverUrl: 'https://localhost:1234',
11021098
roomId: roomId
11031099
};
1104-
}, [roomId]); //Only changes when roomId changes
1100+
}, [roomId]); //শুধুমাত্র roomId পরিবর্তিত হলে পরিবর্তিত হয়
11051101

11061102
useEffect(() => {
11071103
const connection = createConnection(options);
11081104
connection.connect();
11091105
return () => connection.disconnect();
1110-
}, [options]); //Only changes when options changes
1106+
}, [options]); //শুধুমাত্র options পরিবর্তিত হলে পরিবর্তিত হয়
11111107
// ...
11121108
```
11131109
1114-
This ensures that the `options` object is the same between re-renders if `useMemo` returns the cached object.
1110+
এটি নিশ্চিত করে যে `useMemo` cached object রিটার্ন করলে `options` object রি-রেন্ডারের মধ্যে একই থাকে।
11151111
1116-
However, since `useMemo` is performance optimization, not a semantic guarantee, React may throw away the cached value if [there is a specific reason to do that](#caveats). This will also cause the effect to re-fire, **so it's even better to remove the need for a function dependency** by moving your object *inside* the Effect:
1112+
তবে, যেহেতু `useMemo` একটি performance optimization, semantic guarantee নয়, React cached value পরিত্যাগ করতে পারে যদি [এটি করার একটি নির্দিষ্ট কারণ থাকে](#caveats)। এটি effect কে পুনরায় fire করতে বাধ্য করবে, **তাই আপনার object কে Effect এর *ভিতরে* সরিয়ে function dependency এর প্রয়োজন সম্পূর্ণভাবে সরানো আরও ভাল**:
11171113
11181114
```js {5-8,13}
11191115
function ChatRoom({ roomId }) {
11201116
const [message, setMessage] = useState('');
11211117

11221118
useEffect(() => {
1123-
const options = { //No need for useMemo or object dependencies!
1119+
const options = { // ✅ useMemo বা object dependencies এর প্রয়োজন নেই!
11241120
serverUrl: 'https://localhost:1234',
11251121
roomId: roomId
11261122
}
11271123

11281124
const connection = createConnection(options);
11291125
connection.connect();
11301126
return () => connection.disconnect();
1131-
}, [roomId]); //Only changes when roomId changes
1127+
}, [roomId]); //শুধুমাত্র roomId পরিবর্তিত হলে পরিবর্তিত হয়
11321128
// ...
11331129
```
11341130
1135-
Now your code is simpler and doesn't need `useMemo`. [Learn more about removing Effect dependencies.](/learn/removing-effect-dependencies#move-dynamic-objects-and-functions-inside-your-effect)
1131+
এখন আপনার কোড সহজ এবং `useMemo` এর প্রয়োজন নেই। [Effect dependencies সরানো সম্পর্কে আরও জানুন।](/learn/removing-effect-dependencies#move-dynamic-objects-and-functions-inside-your-effect)
11361132
1137-
1138-
### Memoizing a dependency of another Hook {/*memoizing-a-dependency-of-another-hook*/}
1139-
>>>>>>> 50d6991ca6652f4bc4c985cf0c0e593864f2cc91
1133+
### অন্য হুকের ডিপেন্ডেন্সিস মেমোইজ করা {/*memoizing-a-dependency-of-another-hook*/}
11401134
11411135
ধরুন আপনি এমন একটি calculation করছেন যা কম্পোনেন্ট বডির মধ্যে সরাসরি তৈরি করা একটি অবজেক্টের উপর নির্ভর করে:
11421136
@@ -1177,7 +1171,7 @@ function Dropdown({ allItems, text }) {
11771171
// ...
11781172
```
11791173
1180-
এখন আপনার calculation `text` এর উপর সরাসরি নির্ভর করে (যা একটি string এবং আকস্মিকভাবে পরিবর্তিত হতে পারবে না)।
1174+
এখন আপনার calculation `text` এর উপর সরাসরি নির্ভর করে (যা একটি string এবং "আকস্মিকভাবে" পরিবর্তিত হতে পারবে না)।
11811175
11821176
---
11831177
@@ -1353,7 +1347,7 @@ function TodoList({ todos, tab }) {
13531347
console.log([todos, tab]);
13541348
```
13551349
1356-
তারপর আপনি কনসোলে ভিন্ন রি-রেন্ডারের array গুলির উপর রাইট-ক্লিক করে `Store as a global variable` নির্বাচন করতে পারেন উভয়ের জন্য। ধরুন প্রথমটি `temp1` হিসেবে এবং দ্বিতীয়টি `temp2` হিসেবে সংরক্ষিত হয়েছে, তাহলে আপনি browser এর কনসোল ব্যবহার করে পরীক্ষা করতে পারেন যে উভয় array প্রতিটি ডিপেন্ডেন্সিস একই কিনা:
1350+
তারপর আপনি কনসোলে ভিন্ন রি-রেন্ডারের array গুলির উপর রাইট-ক্লিক করে `"Store as a global variable"` নির্বাচন করতে পারেন উভয়ের জন্য। ধরুন প্রথমটি `temp1` হিসেবে এবং দ্বিতীয়টি `temp2` হিসেবে সংরক্ষিত হয়েছে, তাহলে আপনি browser এর কনসোল ব্যবহার করে পরীক্ষা করতে পারেন যে উভয় array প্রতিটি ডিপেন্ডেন্সিস একই কিনা:
13571351
13581352
```js
13591353
Object.is(temp1[0], temp2[0]); // Is the first dependency the same between the arrays?

0 commit comments

Comments
 (0)