首页 > 解决方案 > 无法通过动态字符串访问“this”对象

问题描述

我的 Nuxt + TS App 中有一些方法。我尝试做一些功能`

nextPage(paginationName: string): void {
      this[`${paginationName}Data`].pagination
        .nextPage()
        .then((newPage: number) => {
          this.getData(paginationName, newPage);
        });
    },

并通过 'this' 访问我的计算,但我的编译器无法通过 error 执行此操作 Element implicitly has an 'any' type because expression of type 'string' can't be used to index type。有了@ts-ignore它就可以了,但我必须取消这条线。这是我的计算

soonData(): ISoonData {
      const soonData = this.$store.getters['soonData'];
      const pagination = new Pagination(
        Number(soonData.currentPage),
        soonData.maxPage
      );
      return new soonData(soonData, pagination, 'soon');
    },

我使用 Options-api 来声明我的组件 export default Vue.extend({})

标签: typescriptvue.jsnuxt.js

解决方案


我通过上下文替换解决了它,例如:

let _this: any 

export default Vue.extend({
...

methods: {
  nextPage(paginationName: string): void {
  _this[`${paginationName}Data`].pagination
    .nextPage()
    .then((newPage: number) => {
      this.getData(paginationName, newPage);
    });
},
}
...
created () {
  _this=this
}

})

推荐阅读