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

网站制作的重要性wordpress文章排版编辑器

网站制作的重要性,wordpress文章排版编辑器,郑州企业网站模板建站,注册工程公司名称大全文章目录 一.ref和$refs1.使用ref和$refs获取DOM元素示例 2.使用ref和$refs获取组件 二.$nextTick的介绍和使用场景1.通过常见示例引出概念2.$nextTick介绍 三.拓展1.使用setTimeout处理异步更新2.使用updated()钩子函数处理异步更新3.总结三种方案的优缺点 一.ref和$refs 利用…

文章目录

      • 一.ref和$refs
        • 1.使用ref和$refs获取DOM元素
          • 示例
        • 2.使用ref和$refs获取组件
      • 二.$nextTick的介绍和使用场景
        • 1.通过常见示例引出概念
        • 2.$nextTick介绍
      • 三.拓展
        • 1.使用setTimeout处理异步更新
        • 2.使用updated()钩子函数处理异步更新
        • 3.总结三种方案的优缺点

一.ref和$refs

利用ref和$refs可以用于DOM元素或者组件实例的获取
其特点是查找的范围仅限于当前组件中,具有更精确和稳定的优点

步骤

  • step1:给目标标签或组件添加ref属性
  • step2:在合适的时候(DOM渲染完毕的时候)通过this.$refs.xxx获取目标标签或目标组件(以调用目标组件的方法)
1.使用ref和$refs获取DOM元素
示例
//html
<div ref="wineTag">把酒问青天</div>
<button ref="btn">提交</button>//js
mounted(){console.log(this.$refs.wineTag.innerHTML);//把酒问青天this.$refs.btn.disabled=true;//禁用此按钮
}
2.使用ref和$refs获取组件

子组件:BaseRef.vue

//html
<div><h3>子组件计数器</h3><button @click=increment>点击增加</button>
</div>
//js
data(){return{count:0,config:{min:0,max:10}}
},
methods:{increment(){if(this.count<this.config.max) this.count++;},resetCounter(){this.count=this.config.min;}
}

父组件:App.vue

//html
//step1:通过ref标记目标组件
<base-ref ref="baseRef"></base-ref>
<button @click="getChildData">获取子组件数据</button>
<button @click="getChildMethods">调用子组件方法</button>
<button @click="modifyChildState">修改子组件状态</button>
//js
methods:{//step2:通过$refs调用目标组件上的方法getChildData(){console.log(this.$refs.baseRef.count);//当前计数console.log(this.$refs.baseRef.config);//配置参数},getChildMethods(){this.$refs.baseRef.resetCounter();//重置计数器},modifyChildState(){this.$refs.baseRef.config.max=15;//修改计数器上限}
}

二.$nextTick的介绍和使用场景

1.通过常见示例引出概念
  • 需求
    v-if==>标题文字和"编辑"按钮,点击后它们会消失,同时渲染v-else
    v-else==>input文本框,要求让input出现的同时自动获得焦点
  • 初步逻辑
//显示输入框:
this.isShowEdit=true;
//获取焦点
this.$refs.inp.focus();//在input上绑定ref="inp"
  • 出现问题
    input成功被渲染,但无法自动获得焦点
    此时获取不到inp,打印出来是undefined
  • 原因分析
    Vue出于提升性能的考量,是异步更新DOM的.
    此时input标签的DOM并未被渲染出来(验证:在浏览器控制台的Element中的元素还是标题文字和编辑按钮这两个元素,没有input元素)
  • 解决方法
    使用$nextTick
2.$nextTick介绍
  • 作用:等DOM更新后,才会执行其函数体
  • 语法:this.$nextTick(函数体)
  • 示例
this.$nextTick(()=>{this.$refs.inp.focus();
});
  • 解释
    $nextTick会等DOM更新完毕,然后马上执行其函数体
  • 上例完整代码
//html<!-- 因为ref要绑定在v-if控制的元素下 --><div id="one" v-if="isShowEdit"><input type="text" ref="inp"></div><!-- 所以把默认状态写在v-else--><div id="two" v-else><span>我是标题</span><button @click="handleEdit">编辑</button></div>
//js
data:isShowEdit:false
methods:handleEdit(){this.isShowEdit=true;this.$nextTick(()=>{this.$refs.inp.focus();});}

踩坑:ref必须直接绑定在v-if控制的元素上

  • 总结
    .
    • vue是异步DOM更新的
    • 想在DOM更新完成后做某件事,就使用$nextTick

三.拓展

在上例中,使用$nextTick是为了等DOM更新完毕,
在此逻辑下,可以预料到,使用延时器或者在updated()钩子函数也能解决该问题

1.使用setTimeout处理异步更新
setTimeout(()=>{this.$refs.inp.focus();
},1000);//时间也可以改成0,但缺点仍存在
//结果:1s后input获得焦点

缺点:等待时长是不确定的(延迟时间不可控)

2.使用updated()钩子函数处理异步更新
methods:{handleEdit(){this.isShowEdit=true;// this.$nextTick(()=>{//   // console.log(this.$refs.inp);//   this.$refs.inp.focus();// });}
},
updated(){this.$refs.inp.focus();//成功获取焦点
}

缺点:

  • 每次数据变化都会触发,需要额外状态判断
  • 无法保证子组件已完成更新
3.总结三种方案的优缺点
方法执行阶段可靠性代码耦合度性能影响
this.$nextTick微任务队列最优
updated钩子更新周期内中等
setTimeout(fn,0)宏任务队列较差
http://www.dtcms.com/a/552644.html

相关文章:

  • 腾讯云网站建设教学视频网页快速开发平台
  • qq在线网站代码生成找网上公司做网站
  • 有做网站网站的么毕业设计网站可以做什么
  • 网站建设需要什么内容昆明网站排名优化费用
  • 个人信息网站建设方案书框架栏目漏惹网站做
  • 网站安装模板网站建设分为多少模块
  • 提高网站公信力 单仁我也来做外国网站购物
  • 用电脑建设个人网站 并用手机访问网站制作合同模板
  • 2015网站设计趋势seo排名需要多少钱
  • 网站建设 岗位职责网页设计作业电影介绍网站
  • 莫名接到网站建设电话自我简介网页模板html
  • 网站做电商资质吗河南省汝州市文明建设门户网站
  • 杭州网站搭建怎么制作网页里面的内容
  • 电子商务网站搜索引擎设计提交链接
  • 个人网站布局下载网站备案哪个部门
  • 网站建设展示型是什么学设计需要哪些软件
  • 网站策划包括什么wordpress 文章外链
  • 自建网站需要学哪些服务器做ssr后还可以做网站吗
  • win2008iis配置网站自己想做一个网站
  • 淘宝客做网站可行么上海平台网站建设费用
  • 重庆旅游网站建设规划电子商务网站创业计划书
  • 珠海市建设工程质量监督检测站网站苏州园区公积金管理中心官网
  • 网站快速收录付费入口了解电商基本知识
  • 手机网站代理wordpress积分购买
  • 高端平面设计网站网站博客模板
  • 有哪些做婚礼平面设计的网站网页界面设计特点
  • o2o网站建设平台seo织梦网站建设步骤
  • 怎么做一帘幽梦网站购买域名有什么用
  • 电子商务网站建设的论文wordpress html5主题
  • 哈尔滨企业网站模板建站应用商店官方下载