繁体   English   中英

`data` 在 vue.js 的 `created` 方法中不可用

[英]`data` is not available in the `created` method of vue.js

我试图从我的created()方法中访问组件数据,但它似乎不可用(未定义)。 那我该如何访问数据呢?

<script>
import MainLayout from './MainLayout.vue'
import axios from 'axios'

export default {
  components: { MainLayout },
  data: {
    loading: false,
    mytest: 123,
    table: {
      columns: [],
      data: [],
      total: 0,
    }
  },
  name: 'Entities',
  created: async function() {
    console.log(this.loading, this.table, this.mytest) // undefined, undefined, undefined

  },
}
</script>

请改用mounted()方法。

vuejs 官方文档在这里当你使用 .vue 单个组件时,数据应该是一个函数,它应该返回数据,如果你在脚本标签内的普通 html 中使用 vue,那么你可以使用数据作为对象

仍然不确定它为什么起作用,但是将data从对象转换为函数是有效的:

 data: function () {
    return {
      loading: false,
      mytest: 123,
      table: {
        columns: [],
        data: [],
        total: 0,
      }
    }
  },

我认为这是 Vue.js 的预防措施 - 数据属性必须是函数 - 所以如果使用数据属性作为对象而不是返回每个新对象的函数,vue 会显示错误消息

只有当组件挂载时,才能访问数据本身。

所以如果你想访问data ,你应该等待组件挂载,例如将代码放入mounted的生命周期中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM