渲染函数

x-template

  • 引入外面组件文件写法

    <template>
    <h1 v-if="level === 1">
    <slot></slot>
    </h1>
    <h2 v-else-if="level === 2">
    <slot></slot>
    </h2>
    <h3 v-else-if="level === 3">
    <slot></slot>
    </h3>
    <h4 v-else>
    <slot></slot>
    </h4>
    </template>
    <script>
    exports default{
    props: {
    level: {type: Number}
    }
    }
    </script>
    <anchored-heading :level="2">自定义标题</anchored-heading>
    
    <script>
    import anchoredHeading from '@/components/anchoredHeading'
    components: { anchoredHeading },
    </script>
  • html 页面内组件写法, 属性 id 方便取到组件内容

    <script type="text/x-template" id="anchored-heading-template">
    <h1 v-if="level === 1">
    <slot></slot>
    </h1>
    <h2 v-else-if="level === 2">
    <slot></slot>
    </h2>
    <h3 v-else-if="level === 3">
    <slot></slot>
    </h3>
    <h4 v-else>
    <slot></slot>
    </h4>
    </script>
    <anchored-heading :level="2">自定义标题</anchored-heading>
    
    <script>
    components: {
    'anchoredHeading': {
    template: '#anchored-heading-template',
    props: {
    level: {
    type: Number,
    required: true
    }
    }
    },
    },
    </script>
  • 渲染函数渲染类似组件

    <anchored-heading :level="2">自定义标题</anchored-heading>
    
    <script>
    components: {
    'anchoredHeading': {
    render: function (createElement) {
    return createElement(
    'h' + this.level, // 标签名称
    this.$slots.default // 子节点数组
    )
    },
    props: {
    level: {
    type: Number,
    required: true
    }
    }
    },
    },
    </script>

createElement()

createElement(
// {String | Object | Function}
// 一个 HTML 标签名、组件选项对象,或者 resolve 了上述任何一种的一个 async 函数。必填项。
'div',
// {Object}
// 一个与模板中 attribute 对应的数据对象。可选。
{
// 与 `v-bind:class` 的 API 相同,
// 接受一个字符串、对象或字符串和对象组成的数组
class': {
foo: true,
bar: false
},
// 与 `v-bind:style` 的 API 相同,
// 接受一个字符串、对象,或对象组成的数组
style: {
color: 'red',
fontSize: '14px'
},
// 普通的 HTML attribute
attrs: { id: 'foo' },
// 组件 prop
props: { myProp: 'bar' },
// DOM property
domProps: { innerHTML: 'baz' },
// 事件监听器在 `on` 内,
// 但不再支持如 `v-on:keyup.enter` 这样的修饰器。
// 需要在处理函数中手动检查 keyCode。
on: { click: this.clickHandler },
// 仅用于组件,用于监听原生事件,而不是组件内部使用
// `vm.$emit` 触发的事件。
nativeOn: { click: this.nativeClickHandler },
// 自定义指令。注意,你无法对 `binding` 中的 `oldValue`
// 赋值,因为 Vue 已经自动为你进行了同步。
directives: [{
name: 'my-custom-directive',
value: '2',
expression: '1 + 1',
arg: 'foo',
modifiers: { bar: true }
}],
// 作用域插槽的格式为
// { name: props => VNode | Array<VNode> }
scopedSlots: {
default: props => createElement('span', props.text)
},
// 如果组件是其它组件的子组件,需为插槽指定名称
slot: 'name-of-slot',
// 其它特殊顶层 property
key: 'myKey',
ref: 'myRef',
// 如果你在渲染函数中给多个元素都应用了相同的 ref 名,
// 那么 `$refs.myRef` 会变成一个数组。
refInFor: true
},
// {String | Array}
// 子级虚拟节点 (VNodes),由 `createElement()` 构建而成, 也可以使用字符串来生成“文本虚拟节点”。可选。
// this.$slots.default 可以直接加入使用组件时插入插槽的组件
[
'先写一些文字',
createElement('h1', '一则头条'),
createElement(MyComponent, {
props: { someProp: 'foobar' }
})
]
)

VUE学习-渲染函数的更多相关文章

  1. vue render 渲染函数

    vue render 渲染函数 经常看到使用render渲染函数的示例,而且在一些特殊情况下,确实更好使用,可以更加有效地细分组件,因而借助vue-element-admin来学习一波 render函 ...

  2. Vue.js 渲染函数, JSX(未掌握,未学完)

    渲染函数 , JSX(没完成学习) 基础: 实例属性:vm.$slots default 属性包括了所有没有被包含在具名插槽中的节点. 渲染函数: render: function(createEle ...

  3. vue 学习 渲染、v-指令

    vue渲染 在组件中data是一个方法里面的值要是一个对象return出去 export default { name: "HelloWorld", data() { return ...

  4. Vue基础-渲染函数-插槽

    Vue 测试版本:Vue.js v2.5.13 先看个插槽的例子: <div id="app"> <child > <span slot-scope= ...

  5. Vue基础-渲染函数-父子组件-传递数据

    Vue 测试版本:Vue.js v2.5.13 做了个 demo,把父子组件的数据都绑定到 Vue 实例 app 上,注释中的 template 相对好理解些 <div id="app ...

  6. Vue学习笔记:编译过程

    碰到是否有template选项时,会询问是否要对template进行编译: 在template编译(渲染成UI)有一个过程.模板通过编译生成AST,再由AST生成Vue的渲染函数,渲染函数结合数据生成 ...

  7. Render渲染函数和JSX

    1.Render函数:render是用来替换temlate的,需要更灵活的模板的写法的时候,用render. 官网API地址:https://cn.vuejs.org/v2/guide/render- ...

  8. Vue:模板&渲染函数学习

    模板&渲染函数区别: 1.代码量:模板代码重复逐行拼写,渲染函数可以迭代拼接方式实现重复代码. 2.函数式组件中应用:基于模板的函数式组件需要手动添加特性和事件,给予渲染函数的函数是组件使用c ...

  9. 【js】vue 2.5.1 源码学习 (十一) 模板编译compileToFunctions渲染函数

    大体思路(九) 本节内容: 1. compileToFunctions定位 1. compileToFunctions定位 ==> createCompiler = createCompiler ...

  10. 【js】 vue 2.5.1 源码学习(六) initProxy initLifeCycle 渲染函数的作用域代理

    大体思路 (五) 1. initProxy 渲染函数的作用域代理 ==> es6 如果支持proxy (hasProxy) 就用proxy 不支持就用 defineProperty() prox ...

随机推荐

  1. MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建

    前言: 前面的四个章节我们主要讲解了MongoDB的相关基础知识,接下来我们就开始进入使用.NET7操作MongoDB开发一个ToDoList系统实战教程. MongoDB从入门到实战的相关教程 Mo ...

  2. [编程基础] Python随机数生成模块总结

    Python随机数生成模块教程演示如何在Python中生成伪随机数. 1 介绍 1.1 随机数字生成器 随机数生成器(RNG)生成一组在外观上不显示任何可区分模式的值.随机数生成器分为两类:硬件随机数 ...

  3. P8340 [AHOI2022] 山河重整

    \(20pts\) 给 \(O(2^n)\) 枚举,\(60pts\) 是 \(O(n^2)\),先看看怎么做.计数题无非容斥和 \(dp\),不妨从 \(dp\) 入手.多项式复杂度的做法意味着无法 ...

  4. Go+beego接入OSS上传

    路由 f, h, err := c.GetFile("uploadFile") if err != nil { logx.Error("getfile err " ...

  5. (13)go-micro微服务公用函数开发

    目录 一 前言 二 SwapTo 通过json tag 进行结构体赋值 三 UserForResponse 类型转化 四 最后 一 前言 在utils目录中新建一个swap.go文件 swap.go中 ...

  6. vue打包---放到服务器下(一个服务器多个项目需要配置路径),以及哈希模式和历史模式的不同配置方法

    哈希模式,好用,不需要服务器配合分配路径指向,自己单机就可以打开了 接下来上代码截图 接下来开始截图 历史模式 历史模式需要后端支持 打包后自己直接点击是打不开的 截图如下

  7. 字符编码和字符集-FileReader读取jbk格式的文件

    字符编码和字符集 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果.按照某种规则,将字符存储到计算机中,称为编码.反之,将 ...

  8. Android IO 框架 Okio 的实现原理,如何检测超时?

    本文已收录到  AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在上一篇文章里,我们聊到了 Square 开源的 I/O 框架 Okio 的三个 ...

  9. LeetCode_周赛_330

    6337. 统计桌面上的不同数字 代码 后面出现的数字都是小于 n 的. n = 1 时,答案是 1. n > 1时: 第一天,n % (n - 1) == 1,n - 1会被加入 第二天,(n ...

  10. ES字段类型

    1 String ELasticsearch 5.X之后的字段类型不再支持string,由text和keyword取代,不做说明. 2 text和keyword 2.1 简介 ElasticSearc ...