vue3 在渲染函数中如何使用 v-model:value
时间: 2024-05-03 20:22:34 浏览: 248
在 Vue3 中,可以使用 `v-model:value` 语法糖来实现双向数据绑定的效果。
在渲染函数中使用 `v-model:value` 时,需要手动为目标元素绑定 `onUpdate:modelValue` 事件,并在事件处理函数中更新数据。
例如,在一个自定义的输入框组件中,可以这样使用 `v-model:value`:
```js
import { defineComponent } from 'vue';
export default defineComponent({
props: {
value: {
type: String,
default: '',
},
},
emits: ['update:value'],
setup(props, { emit }) {
const handleChange = (event) => {
emit('update:value', event.target.value);
};
return () => (
<input type="text" value={props.value} onUpdate:value={handleChange} />
);
},
});
```
在上面的代码中,我们定义了一个名为 `value` 的 prop 和一个名为 `update:value` 的事件,这些都是为了实现 `v-model:value` 的效果。在 `setup` 函数中,我们使用 `onUpdate:value` 为输入框绑定了一个事件处理函数 `handleChange`,该函数在输入框的值发生改变时会触发 `update:value` 事件,并将新的值作为参数传递给父组件。
在使用该自定义输入框组件时,可以像下面这样使用 `v-model:value`:
```js
<template>
<custom-input v-model:value="inputValue" />
</template>
<script>
import CustomInput from './CustomInput.vue';
export default {
components: { CustomInput },
data() {
return {
inputValue: '',
};
},
};
</script>
```
在上面的代码中,我们使用 `v-model:value` 将父组件中的 `inputValue` 双向绑定到了 `CustomInput` 组件中的输入框中。当输入框的值发生改变时,会自动更新 `inputValue` 的值。
阅读全文