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

域名做网站自己的电脑wordpress表格自适应

域名做网站自己的电脑,wordpress表格自适应,网站开发所得税,seo单页面优化前言 随着 Vue3.4 版本的发布,defineModel 也正式转正了。它可以简化父子组件之间的双向绑定,是目前官方推荐的双向绑定实现方式。 defineModel 使用 在开发的过程中,如果有需要通过子组件进行状态更新的话,v-model是一个绕不开…

前言

随着 Vue3.4 版本的发布,defineModel 也正式转正了。它可以简化父子组件之间的双向绑定,是目前官方推荐的双向绑定实现方式。

defineModel 使用

在开发的过程中,如果有需要通过子组件进行状态更新的话,v-model是一个绕不开的点。以前的v-model是这样用的 👇

Vue3中得 v-model 默认解析成 :modelValue 与 @update:modelValue

<!-- Father.vue -->
<template><span>num:{{ num }}</span><hr /><Child v-model="num" />
</template><script lang="ts" setup>
import { ref } from 'vue'
import Child from './Child.vue'
const num = ref<number>(0)
</script>
<!-- Child.vue -->
<template>num: {{ modelValue }}<button @click="onClick">count</button>
</template><script lang="ts" setup>
const $props = defineProps<{ modelValue: number }>()
const $emits = defineEmits<{(e: 'update:modelValue', newCount: number): void// 注册update:modelValue事件,作为状态更新的回调
}>()
function onClick() {$emits('update:modelValue', $props.modelValue + 1)// 状态更新时发布事件
}
</script>

在有了defineModel之后,我们就可以在Child.vue中这样实现 👇

<!-- Child.vue -->
<template>num: {{ num }}<button @click="onClick">count</button>
</template><script lang="ts" setup>
// 一步到位,完成事件注册和监听状态变化并发布事件
const num = defineModel({ type: Number, default: 0 })
// 单个v-model绑定等价于如下
// const num = defineModel('modelValue', { type: Number, default: 0 })
function onClick() {num.value += 1
}
</script>

defineModel如何实现多个 v-model 绑定 👇

<!-- Father.vue -->
<template><span>num1: {{ num1 }}</span><span>num2: {{ num2 }}</span><hr /><Child v-model:num1="num1" v-model:num2="num2" />
</template><script lang="ts" setup>
import { ref } from 'vue'
import Child from './Child.vue'
const num1 = ref<number>(0)
const num2 = ref<number>(0)
</script>
<!-- Child.vue -->
<template>num1: {{ num1 }} num2: {{ num2 }}<button @click="onClick">+1</button>
</template><script lang="ts" setup>
const num1 = defineModel('num1', { type: Number, default: 20 })
const num2 = defineModel('num2', { type: Number, default: 20 })
// 一步到位,完成事件注册和监听状态变化并发布事件
function onClick() {num1.value += 1num2.value += 1
}
</script>

实现原理

<!-- Father.vue -->
<template><span>num:{{ num }}</span><hr /><Child v-model="num" />
</template><script lang="ts" setup>
import { ref } from 'vue'
import Child from './Child.vue'
const num = ref<number>(0)
</script>
<!-- Child.vue -->
<template>num: {{ num }}<button @click="onClick">count</button>
</template><script lang="ts" setup>
import { ref, watch } from 'vue'
const $props = defineProps<{ modelValue: number }>()
const $emits = defineEmits<{(e: 'update:modelValue', newCount: number): void
}>()const num = ref()watch(() => $props.modelValue,() => {num.value = $props.modelValue},{// 回调函数会在watch创建时立即执行一次immediate: true}
)
watch(num, () => {$emits('update:modelValue', num.value)
})function onClick() {num.value += 1
}
</script>

等同于如下

<!-- Child.vue -->
<template>num: {{ num }}<button @click="onClick">count</button>
</template><script lang="ts" setup>
const num = defineModel({ type: Number, default: 0 })function onClick() {num.value += 1
}
</script>
  • defineModel其实就是在子组件内定义了一个ref变量nummodelValue的props。

  • watch了props中的modelValue,watch创建时立即执行一次将props中的modelValue赋值给num。当props中的modelValue的值改变后会同步更新num变量的值。

  • watch了ref变量num,当在子组件内改变num变量的值后会抛出update:modelValue事件

  • 父组件收到这个事件后就会更新父组件中对应的变量值。

其实defineModel的源码中是使用 customRef 和 watchSyncEffect 去实现的,我这里是为了让大家能够更容易的明白defineModel的实现原理才举的refwatch的例子。

http://www.yayakq.cn/news/38491/

相关文章:

  • it网站设计房地产开发公司简介
  • 合肥网站建设工作wordpress 附件管理
  • 网站建设竞争大吗中国与菲律宾最新事件
  • 做外贸的人常用的网站博兴网站建设招聘
  • 公司里面有人员增减要去哪个网站做登记网站问题有哪些内容
  • 指定网站怎么设置路由器只访问免费ppt下载
  • 建网站去哪里备案如何常看wordpress默认编辑器
  • 网站定制开发加公众号网页设计资料下载网站
  • 首次做淘宝客网站要安装程序吗远程wordpress数据库
  • 温州网站设计公司网推拉新平台
  • 销售型网站营销目标网站 网页数量
  • 怎么自己做画册网站微官网和手机网站区别
  • 平台型网站建设公司台州建设局网站企业黑名单
  • 怎么做网站文章伪原创jiasale wordpress 插件
  • 宜兴建设局的网站移动端网站建设公司
  • 做服装团购有哪些网站网站策划知识
  • 百度站长反馈中心wordpress固定链接500
  • 设计之家网站怎么样江苏省建设招标网站首页
  • 关于网站建设的基础知识厦门35网站建设公司
  • 上海网站开发方案郑州网站推广哪家专业
  • 天水市网站建设网站如何开通支付功能
  • 网站开发需要大学吗沪深300指数基金排名
  • 电子商务网站建设的心得体会黑白高端大气网站设计工作室织梦dedecms模板
  • 网站的栏目和版块设计的原则吕梁seo排名
  • 工业做网站甜橙直播
  • 哪个网站做欧洲旅行比较好淘宝客网站怎么做优化
  • 大气手机网站用什么软件做网站前端
  • 西宁网站设计公司js做示爱网站例子
  • 莱芜网站建设自助建站优化微信公众号网页怎么制作
  • 沈阳科技网站建设wordpress搜索不了中文linux