This is my code, I used Map to render the vacations cards and I need to add follow and unfollow functionality. I want it to change after I press on "Follow" change it to "Unfollow" on one card only. if anyone can help me it would be much appreciated.
export default function Vacations(){
const [vacationsArray, setVacationsArray] = useState<IVacation[]>([]);
const userDetails = useSelector((state: AppState) => state.userDetailes);
useEffect(() => {
axios.get("http://localhost:3001/vacations/")
.then(data => {
setVacationsArray(data.data)
console.log(data.data)
}).catch(e =>{
console.log("failed to fetch data" + e)
})
},[]);
const onUnfollowClicked = async()=>{
console.log("Unfollowed")
}
const onFollowClicked = async (vacationId:any) =>{
let userId = userDetails[0].id;
await axios.post(`http://localhost:3001/followedVacations/${vacationId}`, {vacationId, userId});
}
return(
<div className="vacationsContainer">
{vacationsArray.map((vacation:any, key:number) =>(
<div key={key} className="vacation">
<button onClick={()=>onFollowClicked(vacation.id)}>Follow</button>
<button onClick={()=>onUnfollowClicked}>Unfollow</button>
<h1>{vacation.destination}</h1> <br></br>
<img width="300px" height="300px" src={vacation.image} alt="" /> <br></br>
<h3>Description: <span>{vacation.description}</span></h3> <br></br>
<h3>Price: <span>{vacation.price}$</span></h3> <br></br>
<h3>From: <span>{vacation.startDate}</span></h3> <br></br>
<h3>To: <span>{vacation.endDate}</span></h3>
</div>
))}
</div>
)
}