最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 7x3 精读Vue官方文档 - 组件实例

    正文概述 掘金(Mottle)   2021-07-28   475

    精读 Vue 官方文档系列 ?


    组件实例 的方法与属性。

    下面来直观获取一个组件实例—— this

    let that;
    const vm = new Vue({
        mounted(){
            that = this;
        }
    });
    vm === that; 
    

    组件实例 - 属性

    $data

    获取当前 Vue 实例的响应式数据。 Vue 实例代理了对其 property 的访问,所以你可以直接通过 this 访问。

    $props

    获取当前组件接收到的所有 props 。Vue 实例代理了对其 property 的访问,所以你可以直接通过 this 访问。

    $el

    获取当前组件实例的根元素。

    $options

    获取当前 Vue 实例上的自定义选项。

    const customFilters = {};
    new Vue({
      customFilters,
      created:function(){
        this.$options.router;
        this.$options.customFilters
      }
    })
    

    $parent

    获取当前组件实例的父实例。父实例也可以通过组件的 parent 选项进行手动指定。

    $root

    获取 Vue 应用的根实例。

    $children

    当前实例的直接子组件。需要注意 $children 并不保证顺序,也不是响应式的。

    $slots

    用来访问当前组件接收到的所有插槽内容,值是一个对象,对象成员的 key 便是具名插槽的名称,如果没有指定具名插槽,则默认的插槽名称为 default

    this.$slots.default; //获取默认的插槽内容。
    this.$slots.header; //获取名称为 header 的插槽内容。
    

    $scopedSlots

    用来访问当前组件接收到的所有插槽内容, 值是一个对象,对象成员的 key 便是具名插槽的名称,与普通 $slots 不同的是,对象成员的 value 则是一个函数,通过执行这些函数并向其中传参,用来返回实际的插槽内容,而这就是作用域插槽的核心点,如何从组件内部向组件外部传递数据的关键。

    this.$scopedSlots.default({props:this.props});
    

    $refs

    值是一个对象,保存所有绑定过 ref Attribute 的 DOM 元素对象和组件实例。

    <a ref="anchor">Anchor</a>
    
    this.$refs.anchor;
    

    $isServer

    当前 Vue 实例是否运行于服务器。

    $attrs

    获取当前组件绑定的所有非 props 的 attribute,值是一个对象。 它可以通过 v-bind="$attrs" 一次性的传入内部组件——这在创建更高层次的组件时非常有用。

    $listeners

    包含了父作用域中的 (不含 .native 修饰符的) v-on 事件监听器。值是一个对象。 它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。

    组件实例 - 方法

    $watch()

    现在监听数据变动,除了使用组件的 watch 选项,还可以选择组件实例的 $watch 方法。

    vm.$watch(expOrFn, callback [,options]) 接收三个参数:

    • expOrFn : 要监听的Vue实例上的表达式或者是监听一个函数计算结果的变化。
    • callback : 监听变动时触发的回调,它接收两个参数,分别是 newValueoldValue
    • options : 配置项,可以提供更高级的监听配置,例如 immediate 以及 deep 等,这与组件的 watch 选项没有什么不同。
    const unwatch =  vm.$watch('a.b.c', function (newVal, oldVal) {
      // 做点什么
    })
    
    // 函数
    vm.$watch(
      function () {
        // 表达式 `this.a + this.b` 每次得出一个不同的结果时
        // 处理函数都会被调用。
        // 这就像监听一个未被定义的计算属性
        return this.a + this.b
      },
      function (newVal, oldVal) {
        // 做点什么
      }
    )
    
    // 之后取消监听
    unwatch();
    

    vm.$watch 返回一个取消观察函数,用来停止触发回调:

    注意在带有 immediate 选项时,你不能在第一次回调时取消侦听给定的 property。

    如果你仍然希望在回调内部调用一个取消侦听的函数,你应该先检查其函数的可用性:

    var unwatch = vm.$watch(
      'value',
      function () {
        doSomething()
        if (unwatch) {
          unwatch()
        }
      },
      { immediate: true }
    )
    

    $set()

    为组件实例的可嵌套响应式对象动态加入响应式成员,并确保组件的视图可以响应式更新。 这是全局 Vue.set 的别名。

    $delete()

    删除组件实例的响应式对象成员。 这是全局 Vue.delete 的别名。

    组件实例 - 事件

    $on()

    向当前组件实例绑定一个自定义事件,事件回调函数可以接收事件触发时传入的所有事件参数。

    $on 方法绑定的事件可以由 $emit 触发。

    const handler = function (msg) {
      console.log(msg)
    };
    
    vm.$on('test', handler);
    vm.$emit('test', 'hi')
    // => "hi"
    

    $once()

    $on 使用方式相同,只是通过 $once绑定的自定义事件,只会触发一次,触发后就会被移除。

    $off()

    移除自定义事件。

    vm.$off(); //如果没有提供参数,则移除所有的事件监听器;
    vm.$off('test'); //如果只提供了事件,则移除该事件所有的监听器;
    vm.$off('test', handler); //如果同时提供了事件与回调,则只移除这个回调的监听器。
    

    $emit()

    触发当前实例上的事件。附加参数都会传给监听器回调。

    组件实例 - 生命周期

    $mount()

    如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态没有关联的 DOM 元素。可以使用 vm.$mount() 手动地挂载一个未挂载的实例。

    这个方法返回实例自身,因而可以链式调用其它实例方法。

    $forceUpdate()

    迫使 Vue 实例重新渲染。

    $nextTick()

    将回调延迟到下次 DOM 更新循环之后执行。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。

    $destory()

    完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。

    触发 beforeDestroydestroyed 的钩子。


    下载网 » 7x3 精读Vue官方文档 - 组件实例

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元