学习Vue.js文档的过程中,发现组件那一章,非Prop特性一节有些疑问:

所谓非 prop 特性,就是指它可以直接传入组件,而不需要定义相应的 prop。

尽管为组件定义明确的 prop 是推荐的传参方式,组件的作者却并不总能预见到组件被使用的场景。所以,组件可以接收任意传入的特性,这些特性都会被添加到组件的根元素上。

例如,假设我们使用了第三方组件 bs-date-input,它包含一个 Bootstrap 插件,该插件需要在 input 上添加 data-3d-date-picker 这个特性。这时可以把特性直接添加到组件上 (不需要事先定义 prop):

<bs-date-input data-3d-date-picker="true"></bs-date-input>

添加属性 data-3d-date-picker=”true” 之后,它会被自动添加到 bs-date-input 的根元素上。

具体如何在组件中取得data-3d-date-picker的值,文档没有明示,其实应该是这么获得的:

Vue.component('bs-date-input', {
    ...
    mounted: function () {
        console.log(this.$el.getAttribute('data-3d-date-picker');
    }
});

this.$el就是组件的根元素,getAttribute已经是JavaScript的标准语法了:取得标签上属性的值。

小记一笔,希望能帮到您。

Logo

前往低代码交流专区

更多推荐