راکت
حل شده

تغییر state ها در react

2 پاسخ

سلام دوستان خسته نباشید
من این استیت رو مپ کردم :

    const [Data , setData] = useState([
        {name : 'بزرگسال (12 سال به بالا)' , number : 1 , key : 1} ,
        {name : 'کودک (2 تا 12 سال)' , number : 0 , key : 2} ,
        {name : 'نوزاد' , number : 0 , key : 3}
    ])

html ای که قراره خروجی باشه :

 <Option key={item.key}>
                        <div>{item.name}</div>
                        <ChangeNumCon>
                            <ControlPointIcon  onClick={()=>AdultPlus(item)} />
                            <Num>{item.number}</Num>
                            <RemoveCircleOutlineIcon />
                        </ChangeNumCon>
</Option>

همانطور که می بینید یه تابع هم هست که با کلیک رو این تابع باید number اون دیتا تغییر کنه.من تابع رو به شکل زیر نوشتم:

    const AdultPlus = (thisitem)=>{
            let newitem = {...thisitem , number : thisitem.number + 1}
            let remItem = Data.filter(item => item.key !== thisitem.key)
            setData([...remItem , newitem])
    }

عمل هم می کنه.اما مشکل اینجاست که هر بار المنتی که بهش اضافه میشه به اخر لیست میره در نتیجه ترتیب لیست دائم در حال عوض شدنه.
باید چجوری کار بکنم که این اتفاق نیفته؟؟؟(شرمنده یکم طولانی شد)

ثبت پرسش جدید

پاسخ‌ها

2
Parastoo Ebrahimi
Parastoo Ebrahimi
@parastooebrahimi

تخصص: front-end developer

بهترین پاسخ

از sort استفاده کنید. این طبیعیه که وقتی آیتم جدیدی به لیست اضافه میشه به آخر لیست میره. دو تا راه حل هست به نظر من. یکی اینکه ایندکس آیتم جدید رو خوردتون داینامیک مشخص کنید. و دوم اینکه بعد از اضافه کردن آیتم جدید به لیست سورتینگ رو انجام بدید که راه حل دوم منطقی تره

arr.sort((a, b) => a.name > b.name ? 1 : -1);
جواد
جواد
@sherlockkh221

خیلی ممنون.
جواب داد.

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام