当前位置: 首页 > wzjs >正文

工业和信息化部电信设备认证中心廊坊快速优化排名

工业和信息化部电信设备认证中心,廊坊快速优化排名,免费建站网站一级大录像不卡,天天做网站目录 一、背景 二、前提 三、旧用法(vue 3.4之前) 四、defineModel新用法(3.4及以后) 五、总结 一、背景 最新也是在学习vue,看到公司前端大佬写的代码,父组件调用子组件prop和emits时,发现…

目录

一、背景

二、前提

三、旧用法(vue 3.4之前)

四、defineModel新用法(3.4及以后)

五、总结


一、背景

        最新也是在学习vue,看到公司前端大佬写的代码,父组件调用子组件prop和emits时,发现有好多种写法,了解了一下发现是不同版本的写法差异,花了半天时间学习一下,特此记录一下。

二、前提

        使用defineModel、defineProps、defineEmits此类的宏函数,需要在vue3环境下配合组合式API中使用。其中宏函数是内置的函数,可以直接使用而无需引用。

三、旧用法(vue 3.4之前)

        此前我一直使用的如下的方法,将参数和暴露的方法通过props和emits传递给子组件,子组件修改值后,调用父组件的emits事件方法。最终在父组件里完成修改,也符合数据单项流通原则。

// Parent.vue
<template><p style="text-align: center;">{{ title }}</p><p style="text-align: center;">{{ content }}</p><Child :title="title" @updateTitle="updateTitle":content="content" @updateContent="updateContent"/>
</template><script setup>
import { ref } from 'vue'
import Child from './components/text.vue';const title = ref('我是标题')
const content = ref('我是内容')// title被修改时,回调的函数
function updateTitle(newValue){title.value = newValue
}
// content被修改时回调
function updateContent(newValue){content.value= newValue
}</script>
// Child.vue
<template><div><span>Title:</span><el-input v-model="title" @input="changeTitle"></el-input><span>Content:</span><el-input v-model="content" @input="changeContent"></el-input></div>
</template><script setup>
import { toRef, ref } from 'vue'const props = defineProps(['title', 'content'])
const emits = defineEmits(['updateTitle', 'updateContent'])const title = ref(props.title)
const content = ref(props.content)// value是v-model绑定自动传递过来的
function changeTitle(value){emits('updateTitle', value)
}
function changeContent(value){emits('updateContent', value)
}
</script>

四、defineModel新用法(3.4及以后)

        新方法通过使用defineModel宏函数自动接收并处理来自调用方传入的props、emits参数和事件。

// Parent.vue
<template><p style="text-align: center;">{{ title }}</p><p style="text-align: center;">{{ content }}</p><Child v-model:title="title"v-model:content="content"/>
</template><script setup>
import { ref } from 'vue'
import Child from './components/text.vue';const title = ref('我是标题')
const content = ref('我是内容')</script>
// Child.vue
<template><div><span>Title:</span><el-input v-model="titleModel"></el-input><span>Content:</span><el-input v-model="contentModel"></el-input></div>
</template><script setup>
// // 如果只有一个参数时,可以不指定参数名
// const model = defineModel()// 多个参数时,指定参数名。返回的是一个ref对象
const titleModel = defineModel('title')
const contentModel = defineModel('content')</script>

五、总结

        可以看到使用defineModel前后可以省略很大一部分代码,v-model绑定的defineModel可以自动处理update:xxx方法的修改。

引用AI的回答:

        v-model:xxx="data" 等价于

                :xxx="data" 
                @update:xxx="data = $event"

        此方法提高了开发效率,并使代码看起来更简洁。但对我这种新手,刚开始会感觉看不懂,莫名其妙的感觉,慢慢了解前因后果后才会懂。

http://www.dtcms.com/wzjs/360609.html

相关文章:

  • 优化网站设计有哪些方法正规seo一般多少钱
  • 计算机网络资源网站建设论文太原seo网站优化
  • python源码分享网站无忧软文网
  • 新公司在哪做网站企业网站设计方案
  • 电商网站设计是干什么的win10必做的优化
  • 毕设做网站需要准备如何给公司网站做推广
  • 湖南网站建设策划关键词优化公司费用多少
  • 郑州做网站公司有多少搜索引擎优化指南
  • 网站服务器租用哪家好新闻今天
  • 无锡网站建设企业排名工厂管理培训课程
  • 做公众好号的网站百度seo排名软
  • 泉州定制网站建设国际机票搜索量大涨
  • ps做网站导航条高度友情链接2598
  • 动态网站如何做百度收录批量查询
  • 网站打开慢什么原因电脑课程培训零基础
  • 17网站一起做网店 新塘武汉seo推广优化
  • 关键词 网站广东省疫情最新
  • web标准网站有哪些优点百度竞价推广托管
  • 企业网站建设全包关联词有哪些类型
  • 网站建设文化怎么样网址外链平台
  • 嘉定网站建设哪家便宜百度一下首页下载安装桌面
  • phpok做网站教程seo工资待遇怎么样
  • logo和网站主色调湖南seo优化首选
  • 一流的天津网站建设长春网络推广公司哪个好
  • oss可以做网站根目录吗济南网络优化哪家专业
  • 网站与客户互动网站广告制作
  • 360网站卖东西怎么做的网络营销和传统营销的区别和联系
  • 做动态网站用什么语言劳动局免费培训项目
  • 做公众号的网站有哪些功能seo网络优化日常工作内容
  • 合肥网站定制开发公司seo网站排名优化服务