前提・実現したいこと
Vue3
Vite
Express(node)
Docker
の環境で開発しています。
一般的なログイン機能、投稿機能、イイね機能の実装をしたいと思っています。
発生している問題・エラーメッセージ
イイね機能について、動作がうまくいきませんでした。
イイねアイコンを押した際に、"イイね済" or "イイね無"でアイコンの表示を切り替えたいのですがうまく動作しません。
v-showで使用している関数 checkLikeArticle() は 関数の内部で console.log で動作確認したのですが、問題なく動作しておりました。
しかし、 (!) を使用していない方の動きがうまくいきません。
エラーメッセージは特にありませんでした。
該当のソースコード
<div v-for="article in allArticle" :key="article.id"> <div v-if="article.user_id === user"> <NoIcon/> <!--アイコンなし--> </div> <div v-show="!checkLikeArticle(article.like, article.user_id)" && article.user_id !== user> <button @click="likeArticle(article.id, user)"> <ThumbUpIcon /> <!--イイね無--> </button> </div> <div v-show="checkLikeArticle(article.like, article.user_id)" && article.user_id !== user> <button @click="removeLikeArticle(article.id, user)"> <HeartIcon /> <!--イイね済--> </button> </div> </div> <script setup> import { ThumbUpIcon, HeartIcon, PencilIcon } from '@heroicons/vue/solid' import { onMounted, computed } from '@vue/runtime-core' import { useStore } from 'vuex' const user = computed(() => store.state.auth.user) const checkLikeArticle = (article_like, article_id) => { console.log(article_id !== user.value) article_like.some((like) => { return like.id === user.value }) } const store = useStore() onMounted(() => { store.dispatch('showAllArticles') }) const allArticle = computed(() => store.state.articles['allArticle']) const likeArticle = (article_id, user_id) => store.dispatch('likeArticle', { article_id, user_id }) const removeLikeArticle = (article_id, user_id) => store.dispatch('removeLikeArticle', { article_id, user_id }) </script>
試したこと
vue-cliの環境では問題なく動作しておりました。
viteに切り替えたところ動作しなくなりました。
補足情報(FW/ツールのバージョンなど)
vite : "^2.4.4"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/11 21:06