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" />
相关推荐
San307 分钟前
ES6+ 新特性解析:让 JavaScript 开发更优雅高效
前端·javascript·ecmascript 6
Heo12 分钟前
简单聊聊webpack摇树的原理
前端·javascript·面试
San3014 分钟前
深入理解 JavaScript 异步编程:从 Ajax 到 Promise
javascript·ajax·promise
少卿17 分钟前
React 日历组件完全指南:从网格生成到农历转换
前端·react.js
程序员鱼皮33 分钟前
Gemini 3.0 发布!
前端·ai编程·gemini
程序员鱼皮35 分钟前
Gemini 3.0 炸裂发布!前端又死了???
前端·ai·程序员·互联网·代码
xiangxiongfly91537 分钟前
CSS svg
前端·css·svg
机灵猫1 小时前
java锁:从 Mark Word 锁升级到 AQS
java·开发语言
山依尽1 小时前
如何将一个 React SPA 项目迁移到 Next.js 服务端渲染
前端·next.js
1 小时前
使用 svgfmt 优化 SVG 图标
前端·svg·icon