Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 监视Vue.js计算属性会在控制台中返回循环数据_Javascript_Vue.js_Vuejs2_Algolia_Computed Properties - Fatal编程技术网

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会检测到它并向您显示列表