Nuxt.js 的 data() 中未定义变量

Posted

技术标签:

【中文标题】Nuxt.js 的 data() 中未定义变量【英文标题】:Variable being undefined in data() in Nuxt.js 【发布时间】:2021-01-13 05:45:12 【问题描述】:

由于某种原因,今天早上这给我带来了麻烦,我就是想不通为什么它不起作用。

我有一个变量“应用程序”设置等于我的 axios 调用返回的数据。我想在我的 data() 中包含“applications.name”作为字段以作为表单发送。但是,当我尝试此操作时,Vue 给我一个错误,提示“无法读取未定义的属性 'name'”。

applicants.name 和 applicants.role 正在模板中工作,所以我得到的不仅仅是空数据

另外,由于某种原因,data() 似乎也无法识别我的“this.loggedInUser.id”字段。 (我已经导入了 Vuex 和 mapGetters)

感谢您的帮助! :)

async asyncData( $axios, params ) 
    try 
      let applicants = await $axios.$get(`/api/v1/apps/$params.id/`);
      return  applicants ;
     catch (error) 
      console.log(error);
      return  applicants: [] ;
    
  ,
data() 
    return 
      applicants: [],
      application: 
        name: this.applicants.name,
        status: null,
        company: null,
        role: this.applicants.role
        // user: this.loggedInUser.id

      
    ;
  
;

【问题讨论】:

【参考方案1】:

尝试将this作为参数传递给数据属性函数:


data(vm)  //refers to this keyword
    return 
      applicants: [],
      application: 
        name: vm.applicants.name,
        status: null,
        company: null,
        role: vm.applicants.role
        // user:vm.loggedInUser.id

      
    ;
  

或将application 设为计算属性:

data() 
    return 
      applicants: [],
    
    ;
  
,
computed:
    application()
        return 
        name: this.applicants.name,
        status: null,
        company: null,
        role: this.applicants.role
        // user: this.loggedInUser.id

      
    

【讨论】:

计算属性解决方案对我有用,您介意解释一下为什么变量也可以存储在计算中吗?我只能在上面找到文档,其中显示了在 data() 中操作变量的方法。谢谢! 如果该数据依赖于其他数据,则应将其存储为计算属性,否则可以在数据选项中声明【参考方案2】:

我假设在初始化数据时,值 applicants.nameloggedInUser.id 不存在。尝试像这样更改数据

data() 
    return 
        applicants:  name: '' ,
        application: 
            name: this.applicants.name,
        ,
        loggedInUser:  id: '' 
    ;

【讨论】:

以上是关于Nuxt.js 的 data() 中未定义变量的主要内容,如果未能解决你的问题,请参考以下文章

[Vue] Preload Data using Promises with Vue.js and Nuxt.js

Nuxt.js asyncData 多请求

d3 javascript中的变量范围

vue 和 ssr+nuxt.js 配置环境变量以及pm2进行服务部署

vue 和 ssr+nuxt.js 配置环境变量以及pm2进行服务部署

如何在 nuxt.js 中定义路由