I'm using nextjs.
I have a variable: delivery_times
.
I created this with useState
and it's empty at first time.
then with useEffect
function I called my api and I updated it.So far, so good.
now I added a property called is_selected
when use click on each object. default value is false
when it changed to true
, my element is added a selected
class.
const [delivery_times,setDeliveryTimes] = useState([])
useEffect(() => {
getDeliveryTimes()
}, []);
const getDeliveryTimes = () =>{
api.get('cart/delivery-times').then((res: any) => {
setDeliveryTimes(res.delivery_times)
}).catch(err => {
console.log(err);
})
}
const setSelectedDeliveryTime = (item) => {
for(var i = 0 ; i < delivery_times.length ; ++i){
delivery_times[i].is_selected = false;
}
const objIndex = delivery_times.findIndex((obj => obj.date == item.date));
console.log(objIndex,item)
delivery_times[objIndex].is_selected = true;
setDeliveryTimes(delivery_times) //it doesn't work
}
<div className="delivery-times mt-5">
{delivery_times.map(item => {
return (<div onClick={()=>setSelectedDeliveryTime(item)} className={item.is_selected === true?"item selected":"item"}>
<p className="date">{item.time_range}</p>
</div>
)
})}
</div>
but selected
class doesn't added at all.