{ریکت}:
همیشه میگن " state رو mutate نکن "
خب این یعنی چی؟
1. اول معنی خود کلمه Mutation
یعنی تغییر دادن چیزی در جای خودش، بدون ساختن نسخه جدید
2. چه چیزهایی mutate میکنند؟
Mutation روی چیزهایی معنا دارد که قابل تغییر هستند. در جاوااسکریپت اینها را mutable میگوییم:
· آرایهها: push, pop, shift, unshift, splice, sort, reverse همه mutate میکنند.
· آبجکتها: obj.key = value, delete obj.key mutate میکنند.
· Map و Set: متدهایشان mutate میکنند.
در مقابل، اینها mutate نمیکنند (immutable operation):
· رشتهها (string): همیشه immutable هستند.
· اعداد و boolean: immutable هستند.
· متدهای غیرمخرب آرایه: map, filter, slice, concat, flatMap — اینها آرایه جدید میسازند.
پس mutate کردن یعنی استفاده از متدها یا عملیاتی که شیء اصلی را در جای خودش تغییر میدهند.
3.چرا ریکت به این سختگیری نیاز داره؟
قابلیتهای پیشرفته ریاکت:
چیزهایی مثل React.memo، useMemo، useCallback، زمانبندی هوشمند رندر (Concurrent)، همه به این وابستهاند که stateها immutable باشند. اگر mutate کنی، این ابزارها فریب میخورند.
مثالش پایینه 👇🏻
@perfino_com
Post #109
56