Vue 中动态渲染插槽内容

Vue 中动态渲染插槽内容

原创地址:原创地址
开发遇到插槽内容动态渲染的需求,v-html只支持原生的html标签,因此找到现在的方法,实现需求。

创建支持渲染的组件

cmp为组件名称,可自行修改
html为组件接受参数

import Vue from 'vue';
......
 components: {
    cmp: {
      props: {
        html: String
      },
      render(h) {
        const com = Vue.extend({
          template: this.html
        })
        return h(com, {})
      }
    }
  },

动态渲染插槽内容

cmp组件中,给html传入插槽内容即可

<template  v-for="(item,index) in slots" :slot="item.title"  slot-scope="text, record"   >
          <cmp :html="item.content" ></cmp>
        </template>

查看效果

传入的内容为
在这里插入图片描述

页面展示效果

在这里插入图片描述

可能遇到错误问题解决办法

浏览器提示runtime-compiler 或 runtime-only
在vue.config.js 加入

module.exports = {
  runtimeCompiler:true,
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值