使用组件的细节点

简介: 《Vue实战笔记》

解析 DOM 模板时的注意事项

<div id="root">
    <table>
        <tbody>
            <row></row>
            <row></row>
            <row></row>
        </tbody>
    </table>
</div>
<script type="text/javascript">
    Vue.component('row', {
        template: '<tr><td>this is a row</td></tr>'
    })
    var vm = new Vue({
        el: '#root'
    })
</script>

上面代码中,row 组件在渲染页面时,并不会把tr节点渲染到tbody里面,而是被提升到了和table同一个级别的地方。原因是在html编码规范中,tbody里面只能放tr,正确的做法是使用tr标签添加is属性等于组件名称row :

<tbody>
    <tr is="row"></tr>
    <tr is="row"></tr>
    <tr is="row"></tr>
</tbody>

同样,ul>liol>liselect > option 标签也要注意这样的问题。

需要注意的是如果我们从以下来源使用模板的话,这条限制是不存在的

子组件内的data要使用函数返回

Vue.component('row', {
    data() {
        return {
            content: 'this is content'
        }
    },
    template: '<tr><td>{{content}}</td></tr>'
})

之所以这样设计是因为子组件有可能会被调用多次,而每次调用时的data数据都应该是独立的。因此需要通过一个函数来实现,每个实例可以维护一份被返回对象的独立的拷贝。

这样才不会出现每个子组件数据相互影响的情况。

通过 ref 引用操作DOM

ref

虽然并不推荐我们在使用vue的时候操作DOM,但是某些情况下我们必须要操作DOM来实现一些功能,因此可以通过ref引用的形式来获取到DOM节点。

<!-- `vm.$refs.p` 指向DOM元素节点 -->
<p ref="p">hello</p>
<!-- `vm.$refs.child` 指向组件实例 -->
<child-component ref="child"></child-component>

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例

组件实例对象 VueComponent

打开控制台,点击demo中的按钮可查看组件实例

See the Pen  VwLeMoM by xugaoyi (@xugaoyi)   on CodePen.

相关文章
|
5月前
|
前端开发 JavaScript 机器人
中后台前端开发问题之动态标注组件渲染到界面上如何解决
中后台前端开发问题之动态标注组件渲染到界面上如何解决
37 0
|
7月前
|
前端开发 JavaScript
详尽分享组件的封装方法【比较高级方法】★★★★★★★
详尽分享组件的封装方法【比较高级方法】★★★★★★★
23 0
|
8月前
|
前端开发
什么是抽离样式模块如何使用
什么是抽离样式模块如何使用
70 0
|
Java 编译器 应用服务中间件
代码开发优化细节
带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50% 。
216 2
代码开发优化细节
|
C++
C++中需要注意的细节
C++中需要注意的细节
65 0
|
前端开发 容器
41EasyUI 数据网格- 扩展行显示细节
41EasyUI 数据网格- 扩展行显示细节
54 0
项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
133 0
|
存储 缓存 监控
FusionStorage原理及组件
FusionStorage原理及组件
420 0
|
存储 Java Ruby
组件构建原则(一):组件
组件构建原则(一):组件
282 0
|
前端开发
前端工作小结9-组件封装思想
前端工作小结9-组件封装思想
158 0