类型 ' $route(currentRoute: any): void; 上不存在属性' 在 Ionic Vue 中

Posted

技术标签:

【中文标题】类型 \' $route(currentRoute: any): void; 上不存在属性\' 在 Ionic Vue 中【英文标题】:Property does not exist on type ' $route(currentRoute: any): void; ' in Ionic Vue类型 ' $route(currentRoute: any): void; 上不存在属性' 在 Ionic Vue 中 【发布时间】:2021-07-09 20:43:58 【问题描述】:

所以我目前正在使用 Vue 和 TypeScript 开发 Ionic WebApp。现在,我尝试获取由路由解析的当前 id。为此,我正在研究一个观察者:

export default 
  data() 
    return 
      productId: null,
    ;
  ,
  watch: 
    $route(currentRoute: any) 
      this.productId = currentRoute.params.id;
    ,
  ,
;

这是我收到的错误消息:

[vue-cli-service] TS2339: Property 'productId' does not exist on type ' $route(currentRoute: any): void; '.
[vue-cli-service]     14 |   watch: 
[vue-cli-service]     15 |     $route(currentRoute: any) 
[vue-cli-service]   > 16 |       this.productId = currentRoute.params.id;
[vue-cli-service]        |            ^^^^^^^^^
[vue-cli-service]     17 |     ,
[vue-cli-service]     18 |   ,
[vue-cli-service]     19 | ;

我已经尝试过使用处理程序表示法,但这也没有用。其他人有想法吗?

【问题讨论】:

路线是什么样的? 【参考方案1】:
  watch: 
    "$route.params.productId": 
      handler: function(value) 
        this.productId = value
        console.log(value);
      ,
      // deep: true,
      immediate: true
    
  ,

在选项中传入immediate: true会立即用表达式的当前值触发回调

【讨论】:

【参考方案2】:

对于enable type inference in components,在导出的组件定义上使用Vue.extend()

import Vue from 'vue'
                    ?
export default Vue.extend(
  data() 
    return 
      productId: null,
    
  ,
  watch: 
    $route(currentRoute: any) 
      this.productId = currentRoute.params.id
    
  
)

【讨论】:

以上是关于类型 ' $route(currentRoute: any): void; 上不存在属性' 在 Ionic Vue 中的主要内容,如果未能解决你的问题,请参考以下文章

$router.push跳转到登陆页,会再次触发当前页的请求?

JSX 元素类型 'Route' 没有任何构造或调用签名

vue实现登录后跳转到之前的页面

错误类型错误:this.route.params.flatMap 不是函数

markdown route参数upcasting类型

TypeScript、react-router 和 jsx:JSX 元素类型 'Route' 没有任何构造或调用签名