首页 > 其他分享 >vue3.3实验性新特性defineModel

vue3.3实验性新特性defineModel

时间:2023-08-12 15:22:12浏览次数:32  
标签:vue const 实验性 vue3.3 defineModel props model modelValue

子父之间使用v-model双向绑定数据,子组件每次都要写emit和props觉得麻烦?

vue3.3新的实验性特性defineModel可以完全不写emit和props。

由于是实验性特性,所以需要配置之后才能使用。

修改vite.config.js:

export default defineConfig({
  plugins: [
    vue(**{
      script: {
        defineModel: true
      }
    }**),
  ],
...

测试案例:

子组件InputBox.vue

<script setup>
// 1. 和vue2一样,先通过props接收数据
// const props = defineProps(['modelValue']);
// 2. 和vue2一样,也是要使用emit来触发父组件的事件
// const emits = defineEmits(['update:modelValue']);
// const ChangeNum = (num) => {
//   emits('update:modelValue', props.modelValue+num)
// }

// 直接定义一个名叫modelValue的,via: v-model
const modelValue = defineModel()

// via:v-model:haha=xxxxx (绑定多个v-model时,可以指定name)
const haha = defineModel('haha')
</script>

<template>
  <div class="son">
    <button @click="modelValue--">-</button>
    <input style="width: 50px;" type="text" :value="modelValue">
    <input style="width: 50px;" type="text" :value="haha">
    <button @click="modelValue++">+</button>
  </div>
</template>

<style scoped>
.son {
  border: 1px solid red;
  padding: 30px;
  width: 300px;
}
</style>

父组件:

<script setup>
import InputBox from "@/compon/InputBox.vue";
import {ref} from "vue";

const count = ref(100)
const num = ref(50)
</script>

<template>
  <div>
    我是父组件, {{ count }}
    <InputBox v-model:haha="count" v-model="count"></InputBox>
  </div>
</template>

标签:vue,const,实验性,vue3.3,defineModel,props,model,modelValue
From: https://www.cnblogs.com/juelian/p/17624864.html

相关文章

  • Vue3.3 编译宏
    Vue3.3新增了一些语法糖和宏,包括泛型组件、defineSlots、defineEmits、defineOptionsdefineProps父子组件传参<template><div><Childname="xiaoman"></Child></div></template><scriptlang='ts'setup>importChildf......
  • 通过实例了解vue3.3更新的特征
    开场白5月份,vue团队发布了vue3.3.这次小版本的发布主要解决了--Vue与TypeScript一起使用时的许多长期存在的痛点.下面我们一起来学习一下vue3.3新特征准备新新特征的环境根据官方团队的描述,我们需要准备一下工作。vue升级到3.3时,建议同时更新以下依赖项:Volar/vue......
  • Vue3.3 的新功能的体验(下):泛型组件(Generic Component) 与 defineSlots
    上一篇说了DefineOptions、defineModel、Props的响应式解构和从外部导入类型这几个新功能,但是没有说Generic、defineSlots等,这是因为还没有完全搞清楚可以用在什么地方。折腾了几天终于弄清楚了。这还要从TS的泛型说起。泛型的目的和意义泛型仅仅只是表达传啥都行吗?当然......
  • Vue3.3 的新功能的一些体验
    Vue3在大版本3.3里面推出来了一些新功能(主要是语法糖),网上有各种文章,但是看起来似乎是一样的。我觉得吧,有新特性了,不能光看,还要动手尝试一下。DefineOptions宏定义先来一个简单的,以前我们有时候想设个name,有时候不想让组件自动继承属性,这时候需要单独设置一个script进行设......