最近手痒痒,玩儿了一下Vue3.0,很舒服,赶紧把这几期Vue2.0弄完,写一些3.0的东西。
本文主要罗列和解析一些个人认为常用或有大用途的Api,作为自我总结的笔记和探讨。
功能:
添加在下次Dom更新循环结束之后的延迟回调,修改数据之后,可以获取更新后的Dom。
用法:
Vue.nextTick( [callback, context] ) vm.$nextTick( [callback] ) // 用法2 // 作为一个 Promise 使用 (2.1.0 起新增) Vue.nextTick() .then(function () { // DOM 更新了 })
说明:
callback:延迟回调函数
context:可选的object
ps:2.1.0 起新增:如果没有提供回调且在支持 Promise 的环境中,则返回一个 Promise。请注意 Vue 不自带 Promise 的 polyfill,所以如果你的目标浏览器不原生支持 Promise (IE:你们都看我干嘛),你得自己提供 polyfill。
扩展:
关于nextTick的执行机制和使用场景,我们还必须掌握类似的requestAnimationFrame() 和 process.nextTick(), 前者是浏览器自带的监听(在下次重绘之前执行),后者是node环境下,在下一个事件轮询的时间点上执行
功能:
注册一个混入,影响注册之后所有创建的每个 Vue 实例。插件作者可以使用混入,向组件注入自定义的行为。
用法:
// 为自定义的选项 'myOption' 注入一个处理器。 Vue.mixin({ created: function () { var myOption = this.$options.myOption if (myOption) { console.log(myOption) } } }) new Vue({ myOption: 'hello!' }) // => "hello!"
说明:
object:一个vm的属性或方法
ps:请谨慎使用全局混入,因为它会影响每个单独创建的 Vue 实例 (包括第三方组件)。大多数情况下,只应当应用于自定义选项,就像上面示例一样。推荐将其作为插件发布,以避免重复应用混入。
功能:
迫使 Vue 实例重新渲染。
用法:
vm.$forceUpdate()
功能:
对响应式数据的属性进行设置、删除,同时触发视图更新。
用法:
// 用法1 Vue.set( target, key, value ) Vue.delete( target, key ) // 用法2 vm.$set( target, key, value ) vm.$delete( target, key )
说明:
target:目标对象
key:要添加的属性名
value:要添加的属性值
ps:主要使用场景,可以避开 Vue 不能检测到 property 被删除的限制
功能:
用于一些常见的文本格式化和一些规范数据mapping。
用法:
<!-- 在双花括号中 --> {{ message | capitalize }} <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId"></div>
// 注册 filters: { capitalize: function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) } }
// 全局注册 Vue.filter('capitalize', function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) }) new Vue({ // ... })
说明:
过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数。
过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示。
ps:过滤器可以接受多个参数,如{{ message | filterA('arg1', arg2) }},这里,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数。
功能:
用于注册自定义指令。
用法:
<!-- 当页面加载时,该元素将获得焦点 --> <input v-focus>
// 注册一个全局自定义指令 `v-focus` Vue.directive('focus', { // 当被绑定的元素插入到 DOM 中时…… inserted: function (el) { // 聚焦元素 el.focus() } })
// 注册局部指令,组件中也接受一个 directives 的选项 directives: { focus: { // 指令的定义 inserted: function (el) { el.focus() } } }
说明:
inserted 只是注册指令的其中一个插值函数,完整的注册属性还可以包括:
bind:只调用一次,指令第一次绑定到元素时调用,在这里可以进行一次性的初始化设置。
inserted:被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已被插入文档中)。
update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有,但是可以通过比较更新前后的值来忽略不必要的模板更新。
componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。
unbind:只调用一次,指令与元素解绑时调用。
Vue.directive('my-directive', { bind: function () {}, inserted: function () {}, update: function () {}, componentUpdated: function () {}, unbind: function () {} })
// console.log(vm.$root); vm.$root //实例对象 vm.$el //根元素(真实的DOM元素) // console.log(vm.$el); vm.$el.innerHTML //得到根元素(真实的DOM元素)中的内容 // console.log(vm.$el.innerHTML); vm.$data //实例下的data对象 // console.log(vm.$data); vm.$options //实例下的挂载项 // console.log(vm.$options); vm.$props //组件之间通信的数据 // console.log(vm.$props); vm.$parent //在组件中,指父元素 // console.log(vm.$parent); vm.$children //在组件中,指子代元素 // console.log(vm.$children); vm.$attrs //用来获取父组件传递过来的所有属性 // console.log(vm.$attrs); vm.$listeners //用来获取父组件传递过来的所有方法 // console.log(vm.$listeners); vm.$slots //组件中的插槽 // console.log(vm.$slots); vm.$scopedSlots //用来访问作用域插槽 // console.log(vm.$scopedSlots); vm.$refs //用来定位DOM元素(使用ref进行追踪) // console.log(vm.$refs); vm.$watch //用于监听数据(在vue文件中使用后会自动销毁) // console.log(vm.$watch); vm.$emit //用于派发事件(常用于数据通信) // console.log(vm.$emit); vm.$on //用于监听事件的派发 // console.log(vm.$on); vm.$once //只监听事件一次(之后不监听) // console.log(vm.$once); //生命周期 beforeCreate() { } created() { } beforeMount() { } mounted() { } beforeUpdate() { } updated() { } beforeDestroy() { } destroyed() { }
本文主要收录vue中常用的这几个API,如果有兴趣学习更多,可以参考其官网。希望本文对你有用,并能熟练运用到实际的项目开发中。
为了方便阅读理解,本文代码已经上传Github
文中如有错误,欢迎在评论区指正,如果有所帮助,欢迎点赞和关注。
以上就是Vue常用API、高级API的相关总结的详细内容,更多关于Vue常用API、高级API的资料请关注小牛知识库其它相关文章!
本文向大家介绍易语言API高级技巧总结,包括了易语言API高级技巧总结的使用技巧和注意事项,需要的朋友参考一下 首先声明,本文的读者该卖是:具有相当的易言语基础的、能较熟练地把常用的的API从VB/C声明转换到易言语DLL命令的易言语喜欢者。 1,使用指针 易言语中出于安定、方便考虑,没有直接提供指针,这正在进行一些高级 纵时不是很方便,固然有一些第三方支撑库可以取出变量指针(比如我的eLib++
页面可以主动调用播放器api,用于获取播放器数据、设置播放器数据或改变播放器播放行为。播放器所有api如下: 1、window下的api: api方法 参数 返回值 说明 示例 支持版本 createCCH5Player(config) {对数配置对象} 播放器对象 创建播放器 var player = createCCH5Player({vid: '49978DE73FEBAC369C33DC5
创建Tag 方法参数CreateTagRequest queueName : String : required Tag关联的Queue的名称 tagName : String : required 待创建的Tag的名称 startTimestamp : long : optional 待创建的Tag的起始时间戳 当此数值为0时,表示从Queue中保留的最旧的Message开始接收 当此数值小于0
THQS相关 说明 当需要和 Live API系统进行 HTTP 通信时,需要将原始的 Query String 转换为和请求时刻相关的 Hashed Query String 后再通过 GET 方法请求 Live API。为了描述的方便,我们将 Query String 转换为 Hashed Query String 的算法称为 THQS 算法。在描述详细的算法流程之前,我们先介绍一下 Unix
本文向大家介绍Java 日期与时间API相关用法总结,包括了Java 日期与时间API相关用法总结的使用技巧和注意事项,需要的朋友参考一下 一、时间和日期 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分析,集群节点统一时间避免超时等。 在时间和日期中有几个关键概念: 日期:通常年月日的组合表示当前日期。 时间:通常时分
云课回放相关 日期: 2020-01-19 创盛视联数码科技(北京)有限公司 一、合流回放 1.1 查询回放列表 描述 通过该接口可以分页获取回放列表的信息 地址 https://api.csslcloud.net/api/v2/record/info 方法 GET 请求参数 参数名称 参数类型 参数说明 备注 roomid 字符串 直播间id 必须 userid 字符串 开发者账号ID