返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue框架render方法如何替换template
  • 708
分享到

vue框架render方法如何替换template

2024-04-02 19:04:59 708人浏览 独家记忆
摘要

目录render方法替换template使用template属性创建组件模板把父组件的template创建换成使用render方法创建template和render用法对比rende

render方法替换template

使用template属性创建组件模板

import Vue from 'vue'
 
const Item = Vue.component('Item', {
  template: `<div>
                <h2>子组件</h2>
                <slot></slot>
              </div>`
})
const app = new Vue({
  el: '#app',
  template: `<div ref="myDiv">              <item ref="item">
                <p ref="p">this is a slot</p>
              </item>
            </div>`,
 data: {
    count: 0  },
  components: {
    Item
  }
})

把父组件的template创建换成使用render方法创建

const app = new Vue({
  el: '#app',
  data: {
    count: 0
  },
  render (createElement) {
    return createElement(
      'div', {
        ref: 'myDiv',
        // domProps: {
        //    innerhtml: '<span>注意:添加该属性会把后面的子节点覆盖</span>'
        // },
        attrs: {
            id: 'test-id',
            title: 'test-title'  
        }
      },
      [
        createElement('item', {
          ref: 'item'
        },
        [
          createElement('p', {
            ref: 'p'
          }, 'this is a slot')
        ])
      ])
  },
  components: {
    Item
  }
})

1.如上面更改后的代码,render方法内传入createElement函数,接下来使用createElement函数来创建节点。

2.函数方法格式 createElement('节点或组件名称', {节点属性}, [子节点])

3.先创建一个div元素, 内部包含ref='myDiv'的属性, 使用数组存放其子节点

4.数组内子节点是 item组件, 属性是 ref="item", 其子节点为p, 依次类推逐层创建子节点, 最后的文本节点使用字符串或变量即可,无需再用[]包含。

template和render用法对比

App.vue(主入口文件)

<template>
    <ParentCmp />
</template>
<script>
import ParentCmp from './ParentCmp';
export default {
    components: {
        ParentCmp
    },
}
</script>

ParentCmp.vue (template写法)

<template>
    <div>
        <h1>我是parent组件</h1>
        <hr />
        <User style="background: #ccc" text="我是传入的文本">
            <template v-slot:header>
                <p>这是名字为header的slot</p>
            </template>
            <p>这是填充默认slot数据</p>
            <template v-slot:footer>
                <p>这是名字为footer的slot</p>
            </template>
            <template v-slot:item="props">
                <p>名字为item的作用域插槽。显示数据{{props}}</p>
            </template>
            <template v-slot:list="props">
                <p>名字为list的作用域插槽。显示数据{{props}}</p>
            </template>
        </User>
    </div>
</template>
<script>
import User from './User'
export default {
    components: {
        User
    },
    props: {},
    data() {
        return {}
    },
    methods: {}
}
</script>

User.vue (template写法)

<template>
    <div>
        <h4>{{text}}</h4>
        <slot name="header"></slot>
        <slot>默认的user slot</slot>
        <slot name="footer"></slot>
        <slot name="item" v-bind="item">item作用域插槽,展示姓名 {{item.name}}</slot>
        <slot name="list" v-bind="{list}">list作用域插槽</slot>
    </div>
</template>
<script>
export default {
    props: {
        text: String
    },
    data() {
        return {
            item: {
                name: '张三',
                age: 28,
                works: '前端后端、设计、产品'
            },
            list: ['a','b','c']
        }
    }
}
</script>

ParentCmp.js (render写法)

import User from './User'
export default {
    props: {},
    data() {
        return {}
    },
    methods: {},
    render(h) {
        return h('div',[
            h('h1', '我是parent组件'),
            h('hr'),
            h(User, {
                props: {
                    text: '我是传入的文本'
                },
                style: {
                    background: '#ccc'
                },
                // 作用域插槽写在scopedSlots里
                scopedSlots: {
                    item: props => h('p', `名字为item的作用域插槽。显示数据${JSON.stringify(props)}`),
                    list: props => h('p', `名字为list的作用域插槽。显示数据${jsON.stringify(props)}`)
                }
            }, 
            // 非作用域插槽写数组里
            [
                h('p', {slot: 'header'}, '这是名字为header的slot'),
                h('p', '这是填充默认slot数据'),
                h('p', {slot: 'footer'}, '这是名字为footer的slot'),
            ])
        ]);
        // jxs写法
        
    }
}

User.js (render写法)


export default {
    props: {
        text: String
    },
    data () {
        return {
            item: {
                name: '张三',
                age: 28,
                works: '前端、后端、设计、产品'
            },
            list: ['a', 'b', 'c']
        }
    },
    methods: {
        getSlot (name, data) {
            if (this.$scopedSlots[name]) {
                return this.$scopedSlots[name](data);
            } else if (this.$slots[name]) {
                return this.$slots[name];
            }
    
            return undefined;
        },
    },
    render (h) {
        return h('div', [
            h('h4', this.text),
            this.getSlot('header'),
            this.$slots.default,
            this.getSlot('footer'),
            this.getSlot('item', this.item),
            this.getSlot('list', {list: this.list}),
        ])
        // jxs写法
        
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: vue框架render方法如何替换template

本文链接: https://lsjlt.com/news/145671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue框架render方法如何替换template
    目录render方法替换template使用template属性创建组件模板把父组件的template创建换成使用render方法创建template和render用法对比rende...
    99+
    2024-04-02
  • vue框架render方法怎么替换template
    本篇内容介绍了“vue框架render方法怎么替换template”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!render方法替换temp...
    99+
    2023-06-30
  • vue如何替换空格
    这篇“vue如何替换空格”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue如何替换空格”文章吧。vue实现替换空格的方法:...
    99+
    2023-07-04
  • Vue如何替换本地图片
    这篇文章主要介绍“Vue如何替换本地图片”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue如何替换本地图片”文章能帮助大家解决问题。Vue替换本地图片的方法:1、通过“”将图片转为base64格式...
    99+
    2023-07-05
  • 详解vue中v-for和v-if一起使用的替代方法template
    目录版本目标效果说明解决方法核心代码片段Car.vuevue中v-for和v-if一起使用的替代方法template 版本 vue 2.9.6element-ui: 2.15.6 目...
    99+
    2024-04-02
  • win10搜索框如何替换浏览器
    本文小编为大家详细介绍“win10搜索框如何替换浏览器”,内容详细,步骤清晰,细节处理妥当,希望这篇“win10搜索框如何替换浏览器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。win10搜索框替换浏览器的方法:...
    99+
    2023-07-01
  • javascript如何替换文本框选中的值
    这篇文章主要为大家展示了“javascript如何替换文本框选中的值”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript如何替换文本框选中的值”这...
    99+
    2024-04-02
  • 如何实现Vue评论框架
    小编给大家分享一下如何实现Vue评论框架,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!评论表单代码:<!-- 文...
    99+
    2024-04-02
  • vue的webpack框架如何搭建
    本篇内容主要讲解“vue的webpack框架如何搭建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue的webpack框架如何搭建”吧!1、想要使用vue,我首先该怎么做?想要学习vue,我第...
    99+
    2023-07-04
  • vue项目中如何使用rem替换px
    这篇文章主要讲解了“vue项目中如何使用rem替换px”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue项目中如何使用rem替换px”吧!工具vue-cl...
    99+
    2024-04-02
  • GoFrame框架Scan类型如何转换
    本篇内容介绍了“GoFrame框架Scan类型如何转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言Scan转换方法可以实现对任意参数到...
    99+
    2023-07-02
  • pandas如何使用replace()方法实现批量替换
    这篇文章给大家分享的是有关pandas如何使用replace()方法实现批量替换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们在编程中进行数据的过程中,如果对于数据一个个的替换很容易的出现操作,而且效率低下。...
    99+
    2023-06-14
  • 如何利用Vue-cli搭建Vue项目框架
    本篇内容介绍了“如何利用Vue-cli搭建Vue项目框架”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先安装node.js在新建的目录中按...
    99+
    2023-07-05
  • 如何使用Linq Lambda表达式替换匿名方法
    小编给大家分享一下如何使用Linq Lambda表达式替换匿名方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Linq Lambda表达式Linq Lambda表达式是一种语言功能,在许多方面类似于匿名方法。事实上,如果...
    99+
    2023-06-17
  • 如何在Vue中实现替换路由而不切换选项卡
    随着前端技术的不断发展,Vue成为了一个非常流行的前端框架。在Vue开发过程中,路由系统是不可或缺的一个重要部分。但是,有时候我们需要在不刷新整个页面的情况下切换路由,同时还需要保持当前选项卡的状态不变。本文将介绍如何在Vue中实现替换路由...
    99+
    2023-05-14
  • 如何将ASP文件转换为Django框架?
    ASP(Active Server Pages)是一种基于服务器端脚本的动态网页技术,而Django则是一个高级的Python Web框架。如果你正在考虑将ASP文件转换为Django框架,那么本文将为你提供一些有用的建议。 首先,让我们来...
    99+
    2023-10-26
    文件 django 框架
  • 在Vue框架中配置Mock服务器的方法
    目录在Vite项目中配置Mock服务器Vite项目的创建与目录结构配置Vite将Vite插件的设置进行分离配置Mock的接口文件目录结构工具函数编写Mock接口在组件中使用在Quas...
    99+
    2022-12-08
    Vue Mock服务器 Vue 配置Mock
  • Java中JFinal框架动态切换数据库的方法
    需求:需要根据企业ID切换对应的数据库,同时,后期可动态增加数据库配置 JFinal框架中对于对于多数据源配置有两种方式: 1.通过配置文件配置,有多少数据库就要配置多少,服务启动时...
    99+
    2024-04-02
  • 基于Bootstrap框架如何实现图片切换
    这篇文章主要介绍了基于Bootstrap框架如何实现图片切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。准备图片,把相关记录添加至数据库表...
    99+
    2024-04-02
  • vue热替换失效的原因是什么及如何解决
    今天小编给大家分享一下vue热替换失效的原因是什么及如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.观察文件位置错...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作