Vue 3 - Vue.delete 替代方案

nit*_*ter 4 vue.js vue-component vuejs2 vue-reactivity vuejs3

Vue.deleteVue 3 的新 Reactivity API 中的替代方案是什么?

Dan*_*Dan 5

Vue.delete并且Vue.set在 Vue 3 中不需要。通过使用代理的新反应系统,Vue 能够检测对反应数据的所有更改。

您可以使用 JavaScript 的delete运算符:

delete obj[key]
Run Code Online (Sandbox Code Playgroud)

这是一个 Vue 3 演示,使用 vanilla JavaScript 删除和添加对象属性:

const { createApp, reactive } = Vue;
const app = createApp({
  setup() {
    const obj = reactive({ a: 1, b: 2, c: 3 })
    return { obj }
  }
});
app.mount("#app");
Run Code Online (Sandbox Code Playgroud)
<div id="app">
  Object: {{ obj }}
  <hr>
  <template v-for="(item, key) in obj">
    <button @click="delete obj[key]">Delete key {{ key }}</button>
  </template>
  <button @click="obj['z'] = 'Added'">Add key z</button>
</div>

<script src="https://unpkg.com/vue@next"></script>
Run Code Online (Sandbox Code Playgroud)

  • @RandyHall Vuex 也不例外。您甚至可以删除不执行操作的密钥,它仍然有效(但您可能应该使用操作)。这是上面使用 Vuex 状态的相同演示,以及用于删除带有或不带有操作的密钥的按钮:https://jsfiddle.net/sh0ber/5t4bpwks/ (2认同)