Vue3 组件双向绑定的两种方法

defineProps 和 defineEmits

案例:

html 复制代码
# child
<script setup>
const props = defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])
</script>

<template>
  <input
    :value="props.modelValue"
    @input="emit('update:modelValue', $event.target.value)"
  />
</template>
html 复制代码
# father
<Child
  :modelValue="foo"
  @update:modelValue="$event => (foo = $event)"
/>

defineModel

Vue 官网 是这样描述的:从 Vue 3.4 开始,推荐的实现方式是使用 defineModel() 因此,以后这个是实现组件双向绑定的首选。

案例:

html 复制代码
# child

<template>
  <div>Parent bound v-model is: {{ model }}</div>
  <button @click="update">Increment</button>
</template>

<script setup>
const model = defineModel()

function update() {
  model.value++
}
</script>
html 复制代码
# father

<Child v-model="countModel" />
相关推荐
ss2737 分钟前
Vue 完整版本发展史时间线(2013–2026)|版本迭代里程碑+核心特性对照表
前端·javascript·vue.js
沫璃染墨8 分钟前
现代C++⊂C++11篇(一)列表初始化全解 & std::initializer_list
开发语言·c++
用户938515635079 分钟前
知识库预处理实战:从URL加载到语义分块的全链路解析
javascript·人工智能·全栈
阿米亚波15 分钟前
【C++ STL】std::forward_list
开发语言·c++·笔记·stl·visual studio·forward_list
亿元程序员19 分钟前
为什么大家都那么喜欢用Shader?
前端
Codebee20 分钟前
OODER Studio设计工具导入体系深度解析
前端
weedsfly24 分钟前
前端开发中的命令模式——从点餐退单到异步任务调度
前端·javascript·面试
慢功夫24 分钟前
💡第四篇:编辑器内核, Monaco model、URI、dirty 状态和 tabs 是怎么协作的?
前端·visual studio code
小马过河R27 分钟前
微前端实践:从概念、原理到 qiankun 落地
前端·人工智能·前端框架
buhuizhiyuci31 分钟前
【python篇——一周速通python语法】python的条件语句和循环语句
开发语言·python