【发布时间】:2020-03-28 00:22:13
【问题描述】:
在我的自定义复选框组件中,我试图将复选框表单字段的值传递给我的父组件:
<template>
<div class="custom-checkbox">
<div :class="{ 'bg-white': value }">
<input
:id="checkboxId"
type="checkbox"
:checked="value"
v-model="value"
@change="$emit('input', $event.target.checked)"
/>
</div>
<label :for="checkboxId">
<slot />
</label>
</div>
</template>
<script>
export default {
props: {
value: {
type: Boolean,
default: false
},
checkboxId: {
type: String,
default: "checkbox-1"
}
}
};
</script>
收到此错误:
[Vue 警告]:避免直接改变一个 prop,因为它的值会是 每当父组件重新渲染时被覆盖。相反,使用 基于道具值的数据或计算属性。道具存在 变异:“价值”
我尝试添加:
data() {
return {
checkedValue: this.value
};
}
...然后将v-model="value" 替换为v-model="checkedValue" 但复选框不再选中,我仍然没有在父组件中获得它的值。
有什么建议吗?
【问题讨论】:
-
如果您使用的是 v-model,则无需设置检查值或监听更改事件。父组件长什么样子?
-
也永远不要改变参考路径,这就是你收到警告的原因 - stackoverflow.com/questions/56596784/…