0

Here is my code:

<ul>
  <li v-for="value in RandomTopic" :key="value.id">{{ value.title }}</li>
</ul>
export default {
  data() {
    return {
      RandomTopic: null
    }
  },
  mounted() {
     ///some method to get data from remote server
     console.log(res.data);
     this.RandomTopic = res.data;
  }
}

I want to render all the data from the remote server in front end. However, after the program ran, it reports this error:

Cannot set property 'RandomTopic' of undefined ; at api request success callback function
TypeError: Cannot set property 'RandomTopic' of undefined

The console.log(res.data); log the JSON successfully so it seems not the problem of AJAX or remote server.

And also, here is a sample of the JSON:

[
    {
        "id": 421,
        "title": "sample1",
        "image_url": "bus.png"
    },
    {
        "id": 535,
        "title": "sample78",
        "image_url": "car.png"
    }
]

What's wrong with my code ? I am a beginner of Vue 3, please help me.

2

1 Answer 1

1

As per the error you mentioned, Issue is basically related to the scope of this. Looks like you are using regular function instead of arrow function ( => {...}) which don't provide their own this binding (it retains this value of the enclosing lexical context).

Reference - Arrow function

.then(res => {
    this.RandomTopic = res.data;
})
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.