美文网首页
在vue3的渲染函数中使用自定义组件

在vue3的渲染函数中使用自定义组件

作者: 道行者 | 来源:发表于2022-01-01 11:21 被阅读0次

    起因是这样的:
    我要在导航菜单中使用element-plus的图标,图标是通过router来配置的:

          {
            path: 'index',
            name: 'log',
            component: () => import('@/views/log/index'),
            meta: { title: '备份日志', icon: 'document', perm: 'logs' }
          }
    

    生成菜单的时候,需要根据icon的值来生成图标。按照element-plus的一般使用方法,图标名称是作为标签来使用的,所以需要用渲染函数来生成图标的标签。

    <script lang="jsx">
    import { h, resolveComponent } from 'vue'
    
    const MenuIcon = {
      name: 'MenuIcon',
      props: {
        icon: {
          type: String,
          default: ''
        }
      },
      render(props) {
        return <el-icon>
           {h(resolveComponent(icon))}
        </el-icon>
      }
    }
    
    export default {
      components: { MenuIcon },
      ...
    }
    

    这儿主要有两点:

    1. h的第一个参数,其实除了字符串外,还可以是一个组件、一个异步组件、或 一个函数式组件
    2. 要使用vue的resolveComponent方法。
      使用时,就可以如下:
    <menu-icon :icon="item.meta && item.meta.icon" />
    

    相关文章

      网友评论

          本文标题:在vue3的渲染函数中使用自定义组件

          本文链接:https://www.haomeiwen.com/subject/kxuoqrtx.html