Vue 3 Internal server error: v-model cannot be used on a prop, because local prop bindings are not writable
回答 2
浏览 2540
2023-01-15
我发现了这个错误并阻止了我的网络应用程序。
2:32:22 PM [vite] Internal server error: v-model cannot be used on a prop, because local prop bindings are not writable.
Use a v-bind binding combined with a v-on listener that emits update:x event instead.
Plugin: vite:vue
File: /Users/julapps/web/myapp/src/components/switch/AudienceTimerSlide.vue
我想让计时器数据成为数据模型(可编辑)及其来自组件的props默认值。为什么这不起作用?我是 vuejs 的新手,我该如何解决这个问题?请帮助...
<template>
----
<div class="field-body">
<div class="field">
<div class="control">
<input @keypress.enter="save" v-model="timer" type="number" class="input is-normal">
</div>
</div>
</div>
-----
</template>
<script>
export default {
props:['id', 'timer'],
setup(props, context){
-----
const save = async() => {
// save form
}
return {
}
}
}
</script>
2 个回答
#1楼
得票数 2
你必须把
defineProps(['question', 'choices'])
改为const props=defineProps(['question', 'choices'])
。
在脚本中像
<TextInput :text="props.question" ></TextInput>
一样调用props.question
。
这为我节省了几个小时的时间,谢谢。
- waitingforthestorm 2023-01-26
#2楼
已采纳
得票数 1
Props 是只读的单向数据流。
使用一个内部数据属性,以timer
作为初始值。像这样:
data() {
return {
localTimer: timer
}
}
和
<input @keypress.enter="save" v-model="localTimer" type="number" class="input is-normal">
或者用v-bind:value
& emit
一个事件取代v-model
。
@input="$emit('update:modelValue', $event.target.value)"
就像这样。
<input @keypress.enter="save" :value="timer" @input="$emit('update:modelValue', $event.target.value)" type="number" class="input is-normal">
我怎样才能从其他组件中做出改变,然后也改变这个组件的值(计时器)呢?
- Nanda Z 2023-01-15
增加了另一个直接使用
timer
的选项
- Tolbxela 2023-01-15