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

建设网站前准备资料北京做vr网站

建设网站前准备资料,北京做vr网站,百度舆情系统,样板网站前端组件库造轮子——Input组件开发教程 前言 本系列旨在记录前端组件库开发经验#xff0c;我们的组件库项目目前已在Github开源#xff0c;下面是项目的部分组件。文章会详细介绍一些造组件库轮子的技巧并且最后会给出完整的演示demo。 文章旨在总结经验#xff0c;开源…前端组件库造轮子——Input组件开发教程 前言 本系列旨在记录前端组件库开发经验我们的组件库项目目前已在Github开源下面是项目的部分组件。文章会详细介绍一些造组件库轮子的技巧并且最后会给出完整的演示demo。 文章旨在总结经验开源分享有问题的话也希望路过的大佬指正。 组件开发流程 核心功能 Input组件的核心功能其实就是实现v-model我们需要对封装出来的组件让他也拥有v-model的功能。 比如举个例子 在vue中我们可以直接对input标签使用v-model,但是我们没办法对封装的组件直接来使用v-model // input 标签可以使用 input typetext v-modelinput /// 自定义封装的 Input 组件 不可以使用v-model Input v-modelinput placeholder请输入内容/Input实现v-model 实现v-model其实就是双向绑定比如我们可以利用vue提供的语法糖v-bind和事件调用来实现 input v-bind:valuevalue v-on:inputvalue $event.target.value /所以原理其实是一样的在vue中暴露给我们一组交互的数据 props: modelValue emit: update:modelValue其实就是在使用v-model时在子组件中会用props: modelValue来接受传进来的数据同时利用事件emit: update:modelValue 官方资料 具体实现代码就是 templateinputclassinputtypetext:valuetextinput.stophanderInput / /template script setup langts import { ref, watch } from vue; const props defineProps({modelValue: {type: String,default: ,}, }); const emit defineEmits([update:modelValue]); const handerInput (e: Event) {const target e.target as HTMLInputElement;emit(update:modelValue, target.value);text.value target.value; }; /script这样我们就实现完成input组件的双向绑定功能。 但是还没完我们还需要来监听数据的修改来更新:value:text绑定的值。 为什么要做这一步呢 我们在刚刚其实只是实现了改变input中的值会修改我们v-model绑定的值但是并没有实现了v-model修改来改变input的值。 看下面这个例子 比如我们用两个input同时绑定上同一个value值当我修改了一个input的值同时另一个input的值一个也同步修改才对。 jcode 因此我们还需要监听modelValue的值同步修改text.value watch(() props.modelValue,(newVal) {if (newVal ) return (text.value );text.value props.modelValue ? props.modelValue : ;}, );这样我们才算完成了这个核心功能 样式更替 在组件库开发中我们会发现一个组件他是有多种样式可以选择的 例如在Hview-ui中input组件就存在可以用size更换大小的样式像这种样式开发在组件库开发中也是非常常见。 具体实现也是非常容易我们需要在props预留出我们想要的属性比如size当然样式也得预先设置好这里就不多赘述了想比对大家来说都不是问题。 size: {type: String,default: medium, },接下来样式更替在组件中的常用写法这个写法就会把当前props.size的值渲染出来放回成一个class类接下来我们直接在template加上这个类即可。 // template templateinputclassinputtypetext:valuetext:classsize // 在这里加上size类input.stophanderInput / /template// script const size computed(() {return {[h-input-${props.size}]: props.size,}; });这样当 props.size 的值为 small 时对象会被渲染成这样,在:class中如果:后面为true那么就是加上h-input-small这个类了。 { h-input-small: small }attrs 最后介绍一下attrs属性想必大家平时应该不怎么会用到这个属性但是这个属性在开发组件时相当好用这个attrs属性可以把style,props等属性拦截下来把其它属性渗透给孩子组件。 举个例子就明白了 在input标签中自带着placeholder,type等属性如果我们要开发Input组件的话总不可能把这些属性也全自己实现吧那就太麻烦了。 在这里我们就可以利用attrs属性,我们把自己封装的Input组件结构一下他在Dom渲染应该是这样的 Input v-modelinput placeholder请输入内容// Input组件内部templateinputclassinputtypetext:valuetext:classsizeinput.stophanderInput //template /Input正常来说我们对组件传入placeholder属性如果要获取到placeholder那么就需要在props中获取到但是如果我们用attrs就可以把这个属性直接加到input标签上。 因此我们就可以用一行代码把这些属性全部实现了。 templateinputclassinputv-bind$attrs // 加上attrstypetext:valuetext:classsizeinput.stophanderInput / /template演示demo 完整项目demo 结语 Input组件的核心开发功能就是上面这些其他更多的详细功能开发可以参考Hview-ui项目源码 如果想要了解更多的组件轮子开发或者组件库开发流程更多详细的组件开发过程更新在GitHub项目源码,最后觉得我们项目or文章不错可以点个star点点小手支持一下也欢迎各路大佬为我们的开源项目添砖加瓦。
http://www.hkea.cn/news/14526057/

相关文章:

  • 浙江网站建设品牌网站建设 信科网络
  • 怎么注册网站的步骤wordpress优化检测
  • 怎样自己搭建一个做影视的网站心理咨询类微网站怎么做
  • 做网站有什么作用德国室内设计联盟
  • 网站推广免费济南建设工程交易网
  • 3小说网站开发wordpress 自动安装 插件怎么用
  • 有什么做旅游攻略的网站好更改wordpress默认登录后台
  • 电子商务网站建设题库及答案建设一个企业网站要多少钱
  • 做网站前期需求分析收费么品牌开发者应考虑的因素
  • 广州有建网站的公司吗工业设计产品效果图
  • 做网站上市的公司网站制作网站做网
  • 珠海市官网网站建设价格北京网站上排名
  • 黑龙江住房和城乡建设部网站无经验能做sem专员
  • 网站制作网页淄博机关建设网站
  • 开发网站用什么语言最好吗做网站投广告攻略
  • 医院行业网站建设资格执业注册中心网站
  • 微信免费做邀请函模版网站设计师用什么软件设计效果图
  • 湖北seo网站设计万维网注册域名后怎么导入网站
  • 怎样用织梦做网站雅茂道网站建设
  • 怎么做一种网站为别人宣传论文网站建设方案
  • 企业网站建设流程介绍淄博网络运营公司
  • 小米盒子做网站美术网站建设方案
  • dede视频网站模板备案 网站负责人 法人
  • 给人做网站网站犯法嘛永久域名注册多少钱
  • 苏州营销型网站开发公司wordpress发布文章提示失败
  • 专业网站建设是哪家便宜wordpress实现圈子功能
  • 吉林省住房城乡建设厅网站苏州市建设局网站首页
  • 镇江网站关键字优化机构吐鲁番建设局网站
  • 公总号开发就是网站开发吗返利的网站怎么做
  • 江苏省网站备案查询网站开发 0755