几年前,这样做是不好的做法

array = [];

因为如果数组被引用到某个地方,那么引用就不会被更新或者类似的东西.

正确的方法应该是array.length = 0;

无论如何,JavaScript现在已经更新了,有一个叫做Vue的框架.js

Vue无法捕捉到array.length = 0;,因此该属性不会react .但它能捕捉array = [];

我们现在可以使用array = [];吗,还是JavaScript仍然存在漏洞?

推荐答案

执行类似于myArray.splice(0)的操作将清除数组中的内容,这也将是被动的:

Vue.config.devtools = false;
Vue.config.productionTip = false;

new Vue({
  el: '#app',

  data() {
    return {
      items: ["a", "b", "c"]
    }
  },
  methods: {
    flush() {
      this.items.splice(0);
    }
  }

});
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>


<div id="app" class="container">

  <div v-for="i in items">{{i}}</div>

  <button @click="flush"> flush</button>
</div>

Vue.js相关问答推荐

将事件监听器绑定到动态元素

Visual Studio代码中的VUE/VLAR扩展不断崩溃:JS/TS语言服务立即崩溃5次…

我可以手动访问 vue-router 解析器吗?

Vue 3组合式API如何测试是否发出正确的事件

如何 for each 动态创建的按钮/文本字段设置唯一变量?

VueJS CKeditor5 上传图片

Vue CLI - 编译后将配置文件保留为外部

指定一个 vue-cli vue.config.js 位置

如何在 Vue.js 中传递 $router.push 中的数据?

是否可以在 vue-devtools 中命名 Vue 实例?

错误:[vuex] 期望字符串作为类型,但发现未定义

Vue更改宽度和内容

动态注册本地 Vue.js 组件

错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (88)

加载时焦点文本框上的 Vue.js

如何从方法内部访问数据

使用 Vue 的点击编辑文本字段

Vue.js 3 - 替换/更新react性对象而不会失go react性

使用 CloudFront 部署在 S3 上的 VueJS 应用程序的指定的密钥不存在

Vue - 重用方法的最佳方式