vue 组件不显示数据

Posted

技术标签:

【中文标题】vue 组件不显示数据【英文标题】:vue component doesn't show data 【发布时间】:2019-11-20 18:09:58 【问题描述】:

Axios 加载数据没有任何问题,不显示任何数据,Laravel Mix 构建没有错误。

我有以下代码:

index.html(正文)

<div id="app">
    <posts></posts>
</div>

在 app.js 我使用这个:

import Vue from 'vue';

// global declare axios
window.axios = require('axios');

import Posts from './components/Posts';
Vue.component('posts', Posts);

new Vue(
    el: '#app',

    props: 
        posts:[
            userId: [Number],
            id: [Number],
            title: [String, Number]
        ]
    
);

在 Posts.vue 组件中,我创建了一个模板和一个在安装时加载数据的脚本:

<template>
    <ul>
        <li v-for="post in posts" v-text="post.title"></li>
    </ul>
</template>

<script>
    export default 


        data: function() 
            return 
                posts: null,
            
        ,

        // when stuff is loaded (document ready)
        mounted: function() 

            // use placeholder data for tests, capture asynchronous data from site using this.
            axios.get('https://jsonplaceholder.typicode.com/posts')
                .then(response => this.posts = response.posts)
                .catch(error => this.posts = [title: 'No posts found.'])
                .finally(console.log('Posts loading complete'));
        ,
    
</script>

所以数据应该显示为一个ul列表:

<ul>
  <li>
     title
  </li>
  <li>
     title
  </li>
  <li>
     title
  </li>
</ul>

【问题讨论】:

【参考方案1】:

试试下面的代码,我已经在需要更改的位上制作了 cmets。

data() 
    return 
        posts: [] // this should be an array not null
    ;
,

// you can do this on created instead of mounted
created() 
    axios.get('https://jsonplaceholder.typicode.com/posts')
        .then(response => 
            this.posts = response.data; // add data to the response
        );

【讨论】:

这成功了,谢谢!创建或安装的作品 - 最佳做法是什么?教程倾向于使用mounted函数。 Created 应该没问题,如果你正在处理依赖于 DOM 中准备好的元素的东西,请使用mounted。请不要忘记将问题标记为已回答【参考方案2】:
` Here "this.post" not take it has instance in axios call.So you have follow like this. `

var vm=this;

axios.get('https://jsonplaceholder.typicode.com/posts') .then(response => vm.posts = response.posts) .catch(error => vm.posts = [title: 'No posts found.']) .finally(console.log('Posts loading complete'));

【讨论】:

谢谢,但您的建议并没有解决问题,仍然没有数据。 确实得到了更新,但只是一个空的

以上是关于vue 组件不显示数据的主要内容,如果未能解决你的问题,请参考以下文章

Vue子组件在第一页加载时不显示动态数据

VUE+Element首次打开Dialog加载子组件数据未渲染(不显示)

导入 Vue (Vue.js) 组件没有错误,但不显示

Vue.js 组件不显示

Vue.js - 组件模板不使用 v-for 渲染

Vue 3 Storybook:(PrimeVue)组件不显示