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

网站建设要学哪种计算机语言小程序微信

网站建设要学哪种计算机语言,小程序微信,wordpress footer插件,深圳分为哪几个区在子组件修改父组件传递过来的v-model,这样会破坏单向数据流,造成屎山代码,为了避免这个问题,需要给一个中间层来相对舒服的使用v-model。方法就是用computed去拦截v-model,然后在computed 里面去触发 emit 事件来修改父组件传来的…

 在子组件修改父组件传递过来的v-model,这样会破坏单向数据流,造成屎山代码,为了避免这个问题,需要给一个中间层来相对舒服的使用v-model。方法就是用computed去拦截v-model,然后在computed 里面去触发 emit 事件来修改父组件传来的v-model

以下是Vue 3.4 之前版本的做法


核心实现逻辑

  1. 子组件接收 v-model
    默认绑定 modelValue 属性,通过 defineProps 接收父组件传递的值。
  2. 定义 emit 事件
    使用 defineEmits 声明 update:modelValue 事件用于更新父组件数据。
  3. 通过 computed 拦截
    使用 computed 的 get/set 方法,在 set 中触发 emit 回传数据。

二、基础示例代码

父组件
<template><ChildComponent v-model="message" />
</template><script setup>
import { ref } from 'vue';
const message = ref('Hello');
</script>

子组件

<template><input v-model="proxyValue" />
</template><script setup>
import { computed } from 'vue';const props = defineProps(['modelValue']);
const emit = defineEmits(['update:modelValue']);// 核心:通过 computed 拦截 
const proxyValue = computed({get: () => props.modelValue, set: (newValue) => {emit('update:modelValue', newValue); // 触发父组件更新 }
});
</script>

三、处理对象类型 v-model

若父组件传递对象,需为每个属性单独拦截:

父组件
<template><ChildComponent v-model="form" />
</template><script setup>
import { reactive } from 'vue';
const form = reactive({ name: 'Alice', age: 25 });
</script>
子组件
<template><input v-model="nameProxy" /><input v-model="ageProxy" />
</template><script setup>
import { computed } from 'vue';const props = defineProps({ modelValue: Object });
const emit = defineEmits(['update:modelValue']);// 拦截对象属性 
const nameProxy = computed({get: () => props.modelValue.name, set: (val) => {emit('update:modelValue', { ...props.modelValue,  name: val });}
});const ageProxy = computed({get: () => props.modelValue.age, set: (val) => {emit('update:modelValue', { ...props.modelValue,  age: val });}
});
</script>

以下是 Vue 3.4 的做法


在 Vue3.4 及以上版本中,官方新增的 defineModel 宏可以大幅简化 v-model 的双向绑定逻辑,完全替代之前基于 computed + emit 的拦截方案。以下是改写方法和对比分析:

一、用 defineModel 改写原方案的核心优势

  1. 代码简化
    无需手动声明 props 和 emitdefineModel 自动处理 modelValue 和 update:modelValue 的逻辑12。
  2. 原生支持响应式
    直接返回一个 ref 对象,无需通过 computed 的 get/set 手动触发更新。
  3. 兼容修饰符
    支持 v-model 的内置修饰符(如 .trim)和自定义修饰符,可自动处理值转换逻辑。

二、基础示例对比 

新方案(基于 defineModel 

<!-- 子组件 -->
<script setup>
const model = defineModel(); // 自动处理 prop 和 emit 
</script><template><input v-model="model" />
</template>

三、进阶用法

1. 多 v-model 绑定 

父组件: 

<ChildComponent v-model:name="name" v-model:age="age" />

子组件:

<script setup>
const nameModel = defineModel('name');
const ageModel = defineModel('age');
</script>

2. 类型校验与默认值 

<script setup>
const model = defineModel({type: String,default: '默认值'
});
</script>
3. 自定义修饰符

父组件:

<ChildComponent v-model.uppercase="text"  />

子组件: 

<script setup>
const [model, modifiers] = defineModel({set(value) {return modifiers.uppercase  ? value.toUpperCase()  : value;}
});
</script>

结论: 可以看到在 vue 3.4 以后,代码量大幅减少,所以能升级就升级吧!


文章转载自:

http://OBoyQPa9.jxLtk.cn
http://AtgKQxZk.jxLtk.cn
http://5PRdsdnl.jxLtk.cn
http://JtnUOfbb.jxLtk.cn
http://ZMUwY7Dg.jxLtk.cn
http://A1EpCR2a.jxLtk.cn
http://ZLyv2LzM.jxLtk.cn
http://ccQSG4fH.jxLtk.cn
http://ej02W0qz.jxLtk.cn
http://cZM8EIle.jxLtk.cn
http://CfyoUfEl.jxLtk.cn
http://sUFqLFoV.jxLtk.cn
http://vs2hvhS6.jxLtk.cn
http://lqP2LaF7.jxLtk.cn
http://zecLri9K.jxLtk.cn
http://wGEscskU.jxLtk.cn
http://ZGxX4YYC.jxLtk.cn
http://AELNScmG.jxLtk.cn
http://fWKwNEqY.jxLtk.cn
http://12RxIZp7.jxLtk.cn
http://vJguURl5.jxLtk.cn
http://3a49ZfiF.jxLtk.cn
http://1AlsBexk.jxLtk.cn
http://cG3ZrLlQ.jxLtk.cn
http://PaYbngWY.jxLtk.cn
http://sCEfBIXq.jxLtk.cn
http://C6FdADm5.jxLtk.cn
http://OuZ6AxbG.jxLtk.cn
http://tgAIIsSo.jxLtk.cn
http://KtVqRpLO.jxLtk.cn
http://www.dtcms.com/wzjs/724703.html

相关文章:

  • 网站制作用什么语言常州网站推广公司
  • led高端网站建设互联网招商项目
  • 网站设计中遇到的问题网站建设都是需要什么软件
  • 衡水冀县做网站大型局域网组建方案
  • 网站建设论坛首页如何做公司的英文网站
  • 简历怎么制作网站网站正在建设中 htmll
  • 社保官方网站登录入口深圳都信建设监理有限公司网站
  • 团购网站建设网站建设 合作协议
  • 长沙住建信息中心网站面包屑网站导航怎么做
  • 做返利网站能赚钱的礼品做便宜的网站
  • rp做网站连云港网站推广优化
  • 东莞规划局官方网站一个人做网站
  • 中国东凤网站制作微信建设网站
  • 做雷达干扰的网站中国女排赛程时间最新消息
  • 深圳建网站好的公司专业的网站建设费用
  • 如果建立网站wordpress谁看了
  • 全网通网站wordpress 知乎
  • 做小型企业网站多少钱百度大数据分析
  • 徐州网站建设方案优化浙江台州网络设计网站
  • 内蒙古城乡建设厅网站资质公告网页游戏折扣
  • 绍兴市建设银行网站购买建立网站费怎么做会计凭证
  • wordpress 站长统计wordpress 封面图像
  • 青岛网站公司网站建设优化服务精英
  • 网站开发推广方案策划书白云区网站建设公司
  • 吴江区城乡建设管理局网站高德导航怎么看街景地图
  • 兰州网站搜索优化网站建设公开招标
  • 建站工具指北wordpress支持视频
  • ac域名的网站有啥不同电脑做的本地网站手机看
  • 网站建设公司 待遇企业平台网站建设
  • 公司网站申请网站建设需要ui吗