vue的render函数

render函数的基本定义

vue使用html构建页面的,render方便用js来渲染。

render的基本组成

一、首先render里有createElement()方法
二、createElement(参数1,参数2,参数3)方法里接收三个参数

  • 参数1:必须要,html标签
  • 参数2:可选,标签的属性
  • 参数3:可选,子元素,有多个子元素用数组表示。

例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue的render</title>
</head>
<body>
<div class="test" id="dome">{{msg}}</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
    new Vue({
            el:"#dome",
            data:{
                msg:"打开测试"
            },
            methods:{
                clickTipSum() {
                    console.log('点了父元素');
                }
            },
             render(createElement){
                 return createElement(
                    //  p标签作为参数1,挂载到id为dome的div上, 该div会被p标签替换。
                    "p",
                    // 参数2是对象,该对象放p标签属性
                    {
                        // 样式
                        style: { marginLight: "8px", padding: "10px 20px", color: '#abcdef', backgroundColor: 'gold ' },
                        on: {
                            // 监听点击事件
                            click: () => {
                                this.clickTipSum();
                            },
                        }
                    },
                    // +++++++++++++++++++++++参数3方式1++++++++++++++++
                    '我是内容加测试子元素',
                    // +++++++++++++++++++++++参数3方式2 ,p标签的子元素,多个放在数组里++++++++++++
                    [
                        // 用相同的创建子元素span标签
                        createElement('span', `${this.msg}子元素1`),
                        // 用相同的创建子元素p标签
                        createElement('h2', `${this.msg}子元素2`),
                        // 子元素p标签
                        '我是内容加测试子元素3',
                    ],

                    )
                }
        });
</script>
</html>

render的this.$slots

可以加插槽。

 render(createElement){
                //  相当于 title = <slots name='title'></slots>
                 const title = this.$slots.title;
                 return createElement(
                    "div",
                    [
                        // 在span里加上<slots name='title'></slots>
                        createElement('span', title),
                    ],
                    )
                }

在这里插入图片描述

render: h => h(App)

render: h => h(App)这个很常见,其实这里的h就是上面的createElement()。

Vuerender 函数Vue.js 中一个非常重要的概念。它是用来描述组件如何渲染的函数。在 Vue 中,我们可以使用模板语法来编写组件的渲染逻辑,也可以使用 render 函数来编写。 使用 render 函数,你可以直接返回一个虚拟 DOM 对象,描述组件的结构和行为。这个函数接收一个参数,通常命名为 h(代表 createElement),它是一个用于创建 VNode(虚拟节点)的函数。 在 render 函数中,你可以通过调用 h 函数来创建 VNode,然后返回一个或多个 VNode 组成的树形结构。VNode 是对真实 DOM 的一种抽象表示,它包含了节点的标签名、属性、子节点等信息。 以下是一个简单的例子,演示了如何使用 render 函数创建一个简单的 Vue 组件: ```javascript // 定义一个组件 const MyComponent = { render(h) { return h('div', { class: 'container' }, [ h('h1', {}, 'Hello, Vue!'), h('p', {}, 'This is a Vue component.') ]) } } // 使用组件 new Vue({ el: '#app', render: h => h(MyComponent) }) ``` 这个例子中,我们定义了一个名为 MyComponent 的组件,在 render 函数中返回了一个包含 h1 和 p 标签的 div 元素。在 new Vue 的时候,我们将 render 函数指定为 MyComponent,从而将组件渲染到具有 id 为 app 的元素中。 通过使用 render 函数,你可以更灵活地控制组件的渲染逻辑,实现更高级的功能。它提供了一种编程式的方式来构建组件,而不仅仅局限于模板语法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值