Rest – asynchronous and wait in vuejs

I can't use vuejs, Axios, async / await and promise (?) Retrieve data from the rest - API

<template>
  <div>
  <div v-if="posts && posts.length">
    <div v-for="post of posts">
       {{post.name}}        
       <img :src="getUserPicturePath(post.name)" />
      </div>
    </div>
  </div>
</template>

On the other hand, as you can see, a method using Axios is being called between V - for

<script>
import axios from 'axios'
export default {
  data: () => {
    posts: []
  }
  created() {
  // a method to fill up the post-array
 },methods: {
    async getUserPicturePath(name){
      const response = await axios.get('linkToApi'+name)
      console.dir(response.data.profilePicture.path)
      return response.data.profilePicture.path
    }
  }
}
</script>

console. Dir (response. Data. Profilepicture. Path) – part gives the correct path of profilepicture, but < img: SRC = "getuserpicturepath (post. Name)" / > writes [object promise] on < template >

What advice do you have? How can I go this way?

Solution

Maybe you can go

<template> 
   ...
   <img :src="img_path" v-if="img_path">
   ...
</template>
<script>
   ...
   data() {
       ...
       img_path: "",img: "userImg.png"
   }

   // or however you wish to pass user image and trigger loading
   create() {
      this.getUserPicturePath(this.img)
   },methods: {
      getUserPicturePath(name){                 
            axios.get('getImage/'+name)
                .then(response => {
                    this.img_path = response.data.path
                    console.dir(response.data.path)
                })
                .catch(error =>{
                    // ... error
                })                
        },}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>