render创建,sfc填充
请教下老师,如果我想使用render函数为组件自身创建一个插槽位的话,我下面的做法有问题吗?
如下代码可以达到一个默认插槽,插槽数据为默认数据的效果吗
<script>
export default {
name: 'index',
data () {
return {
list: [
1, 2, 3
]
}
},
render (h) {
return h('div', [
this.list.map((item, index) => {
if (item % 2 === 1) {
return h('div', {
key: index,
ref: 'test',
refInFor: true
}, 'test')
}
}),
h('slot', {}, '默认数据') // 这里创建插槽,感觉写得有问题
])
}
}
</script>
<template>
<div>
<component-demo1> // demo1的代码,请看3
*************
<template #jsx>
<component-demo2 /> // demo2的代码,请看4
</template>
</component-demo1>
<component-demo3> // 这里的demo3插件就是1部分的代码,这样写达不到覆盖插槽默认内容的效果
<div>1111</div>
</component-demo3>
</div>
</template>
<template>
<div ref="demo3">
<div>sfc组件</div>
<slot> // 有默认内容的默认插槽
<div>-----------------</div>
</slot>
<slot name="jsx"></slot> // 具名插槽
</div>
</template>
export default {
name: 'ComponentDemo2',
render (h) {
return h('div', {
slot: 'jsx' // 老师我比较想知道这个’slot‘属性到底有啥用
}, 'slot')
}
}
上面的代码demo1和demo2是没有问题的,这里面我的疑问主要是
<template #jsx>
<component-demo2 />
</template>
仅仅通过<component-demo2 />
来填充具名插槽jsx应该如何实现
demo3的代码是有问题的,渲染出来还是显示’默认数据‘
请老师指点迷津,谢谢啦,老师过年好