vuejs&iview使用render函数渲染自定义组件不成功,如何解决?

iview官网代码:

 render: (h, params) => {
                            return h('div', [
                                h('Button', {
                                    props: {
                                        type: 'primary',
                                        size: 'small'
                                    },
                                    style: {
                                        marginRight: '5px'
                                    },
                                    on: {
                                        click: () => {
                                            this.show(params.index)
                                        }
                                    }
                                }, 'View'),
                                h('Button', {
                                    props: {
                                        type: 'error',
                                        size: 'small'
                                    },
                                    on: {
                                        click: () => {
                                            this.remove(params.index)
                                        }
                                    }
                                }, 'Delete')
                            ]);
                        }
                    }

我注册了一个组件:QiDropdown,并引入到components里面,但是渲染报错:

import QiDropdown from '@/components/QiDropdown'

export default {
    components:{
        QiDropdown
    },
...
render:(h,params)=>{
                        if(params.row.callout){
                            return h('div',params.row.callout);
                        }else{
                            return h('QiDropdown')
                        }
                    }
...

QiDropdown.vue组件代码:

<style lang="postcss" scoped>
.qi-dropdown{

}
</style>
<template>
<section class="qi-dropdown">
    <Dropdown>
        <a href="javascript:void(0)">
            下拉菜单
            <Icon type="arrow-down-b"></Icon>
        </a>
        <DropdownMenu slot="list">
            <DropdownItem>驴打滚</DropdownItem>
            <DropdownItem>炸酱面</DropdownItem>
            <DropdownItem disabled>豆汁儿</DropdownItem>
            <DropdownItem>冰糖葫芦</DropdownItem>
            <DropdownItem divided>北京烤鸭</DropdownItem>
        </DropdownMenu>
    </Dropdown>
</section>
</template>
<script>
export default {
    data(){
        return{
            
        }
    }
}
</script>

clipboard.png

阅读 7.8k
3 个回答

找到正解了:
https://segmentfault.com/q/10...

这里已经是你的自定义组件(标签了,不需要用引号括起来了)

 return h('div', [
    h(TimeClock, {
      props: {
        hour: params.row.startTime.sTimeHour,
        minute: params.row.startTime.sTimeMinute
      }
    })
  ]);
import QiDropdown from '@/components/QiDropdown'

export default {
render:(h,params)=>{
                        if(params.row.callout){
                            return h('div',params.row.callout);
                        }else{
                            // 直接使用导入的组件
                            return h(QiDropdown)
                        }
                    }
新手上路,请多包涵

其实我想问 `
h("Button", {
props: {

hour: params.row.startTime.sTimeHour,
minute: params.row.startTime.sTimeMinute

}
})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题