Javascript 监视Vue.js计算属性会在控制台中返回循环数据
当我查看下面的“距离计算”属性时,返回的数据是常量,而不仅仅是数据更改时 这是因为我正在设置然后观看,还是有错误?当用户更改计算属性时,我希望观察并重新格式化一些输出数据Javascript 监视Vue.js计算属性会在控制台中返回循环数据,javascript,vue.js,vuejs2,algolia,computed-properties,Javascript,Vue.js,Vuejs2,Algolia,Computed Properties,当我查看下面的“距离计算”属性时,返回的数据是常量,而不仅仅是数据更改时 这是因为我正在设置然后观看,还是有错误?当用户更改计算属性时,我希望观察并重新格式化一些输出数据 computed: { distance: { get: function() { let location = parseFloat(this.radius_search.lat) + ', ' + parseFloat(this.radius_search.lng);
computed: {
distance: {
get: function() {
let location = parseFloat(this.radius_search.lat) + ', ' + parseFloat(this.radius_search.lng);
return this.search_store.queryParameters = { aroundLatLng: location, aroundRadius: this.radiusToMetres };
},
set(value) {
return this.search_store.queryParameters = this.distance;
},
},
radiusToMetres(){
return this.radius * 1600;
},
},
watch: {
distance: function(value) {
console.log(value);
},
},
下面是控制台输出的屏幕截图
您正在getter中赋值,这是一种糟糕的做法。吸气剂应该没有副作用
特别是,您正在创建一个新对象并将其分配给返回值,这导致了循环:
distance
每次查看它时都会获取一个新值,每次获取一个新值时,它的依赖项(如您的观察者)您正在查看它。这是因为您正在设置和重置循环中的数据,我认为这就是getter/setter的工作方式,而watcher会检测到它并向您显示列表