I have a component for adding/deleting an item to/from favorites. It works perfectly fine but a user cannot see whether he/she added the item to favorites or not (I show a star icon if the item is favorited and an empty one if not). How can I do this reactively? I want my icon to change its class if the user clicked on it.
Here is my code:
Component:
<template>
<span :class="isFavorite
? 'mdi mdi-star favorite'
: 'mdi mdi-star-outline'"
class="favorite-item-icon"
@click="isFavorite ? deleteFromFavoriteItems(itemId) : addToFavoriteItems(itemId)">
</span>
</template>
<script>
export default {
import { mapGetters, mapActions } from 'vuex';
props: ['itemId', 'isFavorite'],
methods: {
...mapActions(['addToFavoriteItems', 'deleteFromFavoriteItems']),
},
};
</script>
The component in v-for list of a parent component:
...
<favorite-label :itemId="item.id" :isFavorite="item.is_favourite" />
...
In my store:
addToFavoriteItems({ commit }, itemId) {
http
.post(`${config.api}api/v1/items/favourite-save`, {
item_id: itemId,
});
deleteFromFavoriteItems({ commit }, itemId) {
http
.post(`${config.api}api/v1/items/favourite-delete`, {
item_id: itemId,
});