提交后,变量仍然是反应性的

After commit, variable is still reactive

我正在尝试提交新任务。

预期结果应为 'created task with title',但标题为空,因为 'formData' 仍处于反应状态。

这是代码示例:

// index.vue
<form class="form" @submit.prevent="createTask()">
  <label class="form__label">
    Title:
    <input
      type="text"
      class="form__input" 
      v-model="formData.title"
      placeholder="Title"
      required
    />
    </label>
  <button type="submit" class="form__button">Create</button>
</form>

...

export default class App extends Vue {
  formData = {
    title: "",
    completed: false,
  };


  createTask(): void {
    store.commit("task/SET_TASK", this.formData);
    this.formData.title = "";
  }
}

// Task.ts (vuex)
export default class Task extends VuexModule {
  tasks = [
    {
      title: "Example task",
      completed: false,
    },
  ];

  @Mutation
  SET_TASK(payload: TaskInterface) {
    this.tasks.push(payload);
  }
}

我做错了什么?

您可以通过使用扩展语法创建一个新对象来避免这种情况。

createTask(): void {
    store.commit("task/SET_TASK", { ...this.formData });
    this.formData.title = "";
  }