[Vuejs]-V-for Loop not displaying data when I Query NewsAPI using Vuex and Nuxt JS

0πŸ‘

βœ…

Here is my final answer. I had to loop an extra field in the array to access my data so it was v-for ="article in news.news"


<template>
 <section class="text-gray-600 bg-gray-50 font-body">
   <div  class="container px-5 py-24 mx-auto" >
     <div class="grid grid-cols-1 xl:grid-cols-3 gap-12"  >
       <div  class=""  v-for="article in news.news">
         <div  class="h-full border-2 border-gray-200 border-opacity-60 rounded-lg overflow-hidden">
           <img class="lg:h-48 md:h-36 w-full object-cover object-center" src="https://dummyimage.com/722x402" alt="blog">
           <div class="p-6">
             <h2 class="tracking-widest text-xs title-font font-medium text-gray-800 mb-1">{{article}}</h2>
             <h1 class="title-font text-lg font-medium text-gray-900 mb-3">Shooting Stars</h1>
             <p class="leading-relaxed mb-3">Photo booth fam kinfolk cold-pressed sriracha leggings jianbing microdosing tousled waistcoat.</p>
             <div class="flex items-center flex-wrap ">
               <a class="text-green-500 inline-flex items-center md:mb-2 lg:mb-0">
                 Learn More
                 <svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round">
                   <path d="M5 12h14"></path>
                   <path d="M12 5l7 7-7 7"></path>
                 </svg>
               </a>
               <span class="text-gray-400 mr-3 inline-flex items-center lg:ml-auto md:ml-0 ml-auto leading-none text-sm pr-3 py-1 border-r-2 border-gray-200">
                 <svg class="w-4 h-4 mr-1" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24">
                   <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
                   <circle cx="12" cy="12" r="3"></circle>
                 </svg>
                 1.2K
               </span>
               <span class="text-gray-400 inline-flex items-center leading-none text-sm">
                 <svg class="w-4 h-4 mr-1" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24">
                   <path d="M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z"></path>
                 </svg>
                 6
               </span>
             </div>
           </div>
         </div>
       </div>
     </div>
   </div>
 </section>
</template>

<script>
import { mapState } from 'vuex'
export default {
 computed: {
   ...mapState(['news'])
 },
 created(){
   this.$store.dispatch('newsList')
 }
}
</script>

πŸ‘€Udemezue John

1πŸ‘

Which is correct right ?
article in itself is an object ( which in your case looks like an array however ).
you are trying to render article as a whole,
instead try to render one property inside article object.

for e.g – instead of rendering {{article}} try {{article.author}} or {{article.title}}

πŸ‘€mayank sharma

Leave a comment