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" />
相关推荐
m0_5312371715 分钟前
C语言-static关键词,寄存器变量,define宏定义
c语言·开发语言
DEMO派32 分钟前
前端CSRF攻击代码演示及防御方案解析
前端·csrf
change_fate40 分钟前
vite 修改base之后需要修改public路径
javascript·vue.js
REDcker41 分钟前
Media Source Extensions (MSE) 详解
前端·网络·chrome·浏览器·web·js
CHANG_THE_WORLD1 小时前
C++ 一维、二维、三维数组完整演示
开发语言·c++
~央千澈~1 小时前
抖音弹幕游戏开发之第14集:添加更多整蛊效果·优雅草云桧·卓伊凡
开发语言·python·游戏
阿珊和她的猫1 小时前
Chrome 的 SameSite 属性:原理与解决方案
前端·chrome
百锦再1 小时前
线程安全的单例模式全方位解读:从原理到最佳实践
java·javascript·安全·spring·单例模式·kafka·tomcat
belldeep1 小时前
nodejs: 能在线编辑 Markdown 文档的 Web 服务程序,更多扩展功能
前端·node.js·markdown·mermaid·highlight·katax
程序员林北北2 小时前
【前端进阶之旅】一种新的数据格式:TOON
前端·javascript·vue.js·react.js·typescript·json