Элементы games должны иметь уникальное свойство, которое бы позволяло их идентифицировать, id. Если такого нет - срочно добавляйте. Сохранять в localStorage следует эти id. Так что добавим в стейт соответствующий массив:
state: {
wishlistIds: [],
...
И укажем его в настройках persistedstate (да, можно сохранять не весь стейт, а только некоторые элементы):
plugins: [
createPersistedState({
paths: [ 'wishlistIds' ],
}),
...
Массив wishlist - из стейта переносим в геттеры:
getters: {
wishlist: state => state.games.filter(n => state.wishlistIds.includes(n.id)),
...
Добавление/удаление, соответственно:
mutations: {
addGame(state, gameId) {
if (!state.wishlistIds.includes(gameId)) {
state.wishlistIds.push(gameId);
}
},
removeGame(state, gameId) {
const index = state.wishlistIds.indexOf(gameId);
if (index !== -1) {
state.wishlistIds.splice(index, 1);
}
},
...
В компонент, отображающий элементы games, добавим вычисляемое свойство liked, которое будет указывать, находится ли текущий элемент в wishlist и управлять добавлением/удалением:
computed: {
liked: {
get() {
return this.$store.state.wishlistIds.includes(this.game.id);
},
set(val) {
this.$store.commit(val ? 'addGame' : 'removeGame', this.game.id);
},
},
...
<button @click="liked = !liked" :class="{ liked }" class="like"></button>
Ну а свойство isLiked и метод putLike - это мусор, их следует вырезать.