【发布时间】:2020-12-07 22:02:29
【问题描述】:
我正在使用带有 typescript 和 nuxt-property-decorator 包的 nuxt v2.14.1。
我面临很多问题。
-
我无法从 fetch() 或 asyncData 设置数据。
console.log(this.fruits) // => undefined console.log(response.data);// => [{},..} this.fruits = response.data; // => this does not set fruits
Vue 开发工具也将水果显示为空数组。
谁能帮我了解发生了什么以及如何解决它?
这里是使用 fetch 的代码:
@Component({
layout: 'AppLayout',
async fetch({ query, store }: Context) {
const self = this;
const model = new Car();
model.setFilters(query);
const response = await model.$api.$get('/new/cars').catch(() => {
store.$showError('Unable to fetch cars');
});
if (response) {
// @ts-ignore
self.cars = Car.collect(response.data as Partial<Car>[]);
}
},
})
export default class index extends Vue {
cars: Car[] = [];
}
如果我只是将 fetch 重命名为 mounted,上面的代码就可以工作。
另外,当使用 asyncData 时,代码似乎可以工作,并且我看到了我的汽车列表,然后,当页面加载完成时,即使我可以看到 Vue 开发工具中列出的汽车,页面也会自动变为空。
更新:在 fetch 参数中不使用 nuxt 上下文似乎有效。 不知道为什么。
【问题讨论】:
-
您发布的内容还不够多,但您的问题几乎可以肯定是您试图在数据实际设置之前访问数据。不要忘记记录到控制台的对象是对象的实时视图,而不是对象被记录时的快照。它会让你对什么时候发生的事情产生错误的印象。
-
在 asyncData 中您将无法访问
this,但是您可以在 fetch 中访问它。您能否在错误中添加更多代码/详细信息!!! -
@HardikShah 感谢您的宝贵时间。更新了代码。
标签: typescript vue.js nuxt.js