Vue.js进阶 render函数的妙用

本文详细介绍了Vue中的render函数,包括其基本用法、参数解析、动态渲染、props传递、slot使用、v-model功能以及函数化组件和context的应用示例,帮助读者更好地掌握这一高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

render函数初步了解
  • template下只允许有一个子节点
    小栗子:

使用render函数就会省事很多:栗子进行对比:

    <div id="app">
        <child :level="level">
            我是一个痴人
        </child>
    </div>
    <template id="hdemo">
        <div>
        <h1 v-if="level==1">
        <slot></slot>
        </h1>
        <h2 v-if="level==2">
            <slot></slot>
        </h2>
        <h3 v-if="level==3">
            <slot></slot>
        </h3>
        </div>
    </template>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>

    <script>
        // 自定义指令 使用Vue组件定义:
        // Vue.component('child', {
        //     props: ['level'],
        //     template: `#hdemo`

        // });
        // 使用render函数定义
        Vue.component("child", {
            render: function(createElement) {
                return createElement('h' + this.level, this.$slots.default)
            },
            props: ['level']
        })
        var app = new Vue({
            el: '#app',
            data: {
                level: 3
            }

        })
    </script>
render函数的第一个参数

render函数的方法中,参数必须是createElement,createElement的类型是function
render函数的第一个参数可以是 String | Object | Function
小栗子:

 <div id="app">
        <child></child>
    </div>


    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>

    <script>
        Vue.component("child", {
            // 第一个参数必选
            //    --- String --- html标签
            // ---Object  ---一个含有数据选项的对象
            // ---Function   ---方法返回含有数据选项的对象
            render: function(createElement) {
                // `createElement`的类型是`function`
                alert(typeof createElement)
                    // String-- - html标签
                    // return createElement('div')
                    // Object  一个含有数据选项的对象
                    // return createElement({
                    //
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土豆片片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值