سلام توی کلاس بیس کامپوننت ها برای دسترسی به prev state به این صورت عمل میکردم:
this.setState(prevState => {
return {
aisle: [...prevState.aisle, ...aisles]
}
})
حالا توی فانکشنال کامپوننت برای دسترسی به اون باید چه کنم؟
@MehdiAghighi
@hesammousavi
@kamran.davar
Functional updates
If the new state is computed using the previous state, you can pass a function to setState. The function will receive the previous value, and return an updated value. Here’s an example of a counter component that uses both forms of setState:
function Counter({initialCount}) {
const [count, setCount] = useState(initialCount);
return (
<>
Count: {count}
<button onClick={() => setCount(initialCount)}>Reset</button>
<button onClick={() => setCount(prevCount => prevCount - 1)}>-</button>
<button onClick={() => setCount(prevCount => prevCount + 1)}>+</button>
</>
);
}
@kamran.davar توی مثال بالا prevState برای count رو بر میگردونه. من میخوام مثل کامپوننت های کلاسی وقتی prevState رو مینویسی بعدش با دات مشخص بکنی کدوم استیت. مثل این
this.setState(prevState => {
return {
aisle: [...prevState.aisle, ...aisles]
}
})
یک فرق اساسی بین استیت در کلاس کمپوننت و فاننشن کامپوننت هست.
اونم اینک در فانکشن کامپوننت ها یک استیت چند قسمتی نداریم. به جاش برای هر قسمت یک استیت داریم و یک متد ست استیت.
سبک و سیاق برنامه نویسی ما هم با در نظر گرفتن این تفاوت باید عوض بشه.
به هر حال اگه به هر دلیلی دوس دارین شبیه کلاس کامپوننت ها کد نویسی کنیددستتون بازه. میتونید استیتتون رو یک آبجکت بزرگ در نظر بگیرید و دقیقا همون کارایی که تو کلاس کاپوننت ها با استیت میکریدین اینجا هم بکنید.
@parastooebrahimi باید همون کاری رو بکنید که اینجا گفتم:
const [state, setState] = useState({})
یعنی در واقع باید یک آبجکت درست کنید چون توی فانکشنال کامپوننت ها state شما یک آبجکت کلی نیست پس باید یک استیت درست کنید که داخل اون یک آبجکت باشه با مقادیر مورد نظر.
حالا مثل زیر:
setState(prevState => {
return {
aisle: [...prevState.aisle, ...aisles]
}
})
فکر می کنم همین بهترین راهه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟