P粉6656790532023-08-31 11:46:54
vue/no-async-in-computed-properties
属性在模板中没有被捕获,但生命周期钩子可以通过计算属性获取数据
你在控制台中看到的原因是因为大多数现代浏览器将对象作为实时数据记录(一旦对象更新,控制台也会更新)。所以你在控制台中看到的不是console.log
执行时对象的值,而是稍后的值。你可以通过使用console.log(JSON.parse(JSON.stringify(this.products)))
来确认这一点...
为了解决这个问题,使用watch
而不是computed
data() { return { products: [] } }, watch: { '$route.query.pid': { handler: function(newValue) { if(newValue) { axios.get(`/api/products/${newValue}`).then(response => { var product = { id: response.data[0].id, name: response.data[0].name, units: response.data[0].units image: response.data[0].product_image[0].image price: response.data[0].price quantity: 1 } this.products = [] this.products.push(product) } else this.products = this.$store.state.cart }, immediate: true } },