我的道具editToTask出现问题:
app.js:42491 [Vue警告]:避免直接更改prop,因为每当父组件重新渲染时,该值就会被覆盖。而是使用基于属性值的数据或计算属性。道具被突变:“ taskToEdit”
组件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>
答案 0 :(得分:1)
您的问题可以轻松解决,不应该更改道具。 v-model
很好地解决了这个问题,您应该研究component v-model。
首先,您可以使子组件与v模型一起使用,在子组件中使用名为value的prop代替。代表任务值。
<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-model。
<edit-task v-model="taskToEdit"></edit-task>