当前位置: 首页 > 知识库问答 >
问题:

Vue警告避免变异道具“taskToEdit”

魏彦
2023-03-14

我有一个问题与我的道具editToWork:

app.js:42491[Vue warn]:避免直接修改道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具正在变异:“任务编辑”

组件TaskComponent.vue

<template>
...
        <button
          type="button"
          class="btn btn-secondary"
          data-toggle="modal"
          data-target="#editModal"
          @click="getTask(task.id)"
        >Editer</button>
      </li>
      <edit-task v-bind:taskToEdit="taskToEdit"></edit-task>
...
</template>

<script>
export default {
  data() {
    return {
      tasks: {},
      taskToEdit: "",
    };
  },

  methods: {

    getTask(id) {
      axios
        .get("http://localhost:3000/tasks/edit/" + id)
        .then((res) => (this.taskToEdit = res.name))
        .catch((error) => console.log(error));
    },
};
</script>

组件EditTaskComponent:

<template>
...
            <form>
              <div class="form-group">
                <label for>Nom des tâches</label>
                <textarea name="name" id="name" rows="4" class="form-control" v-model="taskToEdit"></textarea>
              </div>
            </form>
...
</template>

<script>
export default {
  props: ["taskToEdit"],
};
</script>

共有1个答案

佴飞驰
2023-03-14

你的问题可以更容易地解决,你不应该改变道具。v模型很好地解决了这个问题,你应该研究组件v模型。

首先,您可以使您的子组件与v-model一起工作,在子组件中使用名为value的道具。它们表示任务值。

<script>
export default {
  props: ["value"],
};
</script>

其次,避免使用v型模型对道具进行变异。而是发出一个输入事件。

<textarea name="name" id="name" rows="4" class="form-control" :value="value" @input="$emit('input', $event.target.value)"></textarea>

在父组件中,现在可以像这样使用v模型。

<edit-task v-model="taskToEdit"></edit-task>
 类似资料:
  • 如何解决此错误消息: [Vue warn]:避免直接改变道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具变异:“抽屉” 父组件: 子组件:

  • 我得到警告: app.js:87486[Vue警告]:避免直接更改prop,因为每当父组件重新呈现时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。被变异的道具:“喜欢计数” 我的刀锋 Vue代码

  • 我的观点是这样的: 我的星形组件如下所示: 我的css是这样的: 当我点击星号时,控制台上出现如下错误: [Vue warn]:避免直接改变道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。正在变异的道具:“value”(位于C:\xampp\htdocs\myshop\resources\assets\js\components\Star.vue) 我怎样才能解

  • 我有一个带有道具的组件,我想将值从false修改为true,但我有一个消息表单chrome控制台 在父组件中,我有一个函数(myFunction),它接受一个参数(value)。 我需要像这样保留我的参数,但我还需要从子组件检索emit的值,以更改myData的值,而不改变child中的props。 https://codesandbox.io/s/distracted-wiles-w8vwf 谢

  • 问题内容: Vue,Laravel和AJAX 时 遇到 了以下错误: vue.js:2574 [Vue警告]:避免直接更改道具,因为每当父组件重新渲染时,该值就会被覆盖。而是使用基于属性值的数据或计算属性。变异的道具:“列表”(位于component中) 我在 main.js中* 有此代码 * 我知道当我覆盖列表属性时问题出在created()中,但是我是Vue的新手,所以我完全不知道如何解决它。

  • 我有一个组件,我想在不同的页面上使用。嗯,它在第一次切换之前工作良好。它显示像以前一样,但是当我单击“关闭”按钮时,它会关闭,但是控制台输出: [Vue warn]:避免直接改变道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具变异:“可见” 发现于 --- 在那之后点击就不显示了 有办法解决这个问题吗? Snackbar.vue 我ogin.vue