87,903
社区成员
发帖
与我相关
我的任务
分享
<template>
<div>
<slot name='t1'></slot>
</div>
</template>
Vue.component('my', {
render: function(createElement){
var vnode = this.$scopedSlots.default({name: 't1'});
return createElement('div', [vnode])
})
}
<div id="test">
<my>
<template v-slot:t1>hello</template>
</my>
</div>
楼主解决了吗?我也想知道怎么在render里面放动态的slot的name
<template>
<div>
<slot></slot>
</div>
</template>
用render函数生成:
render: function(createElement){
return createElement('div', this.$slots.default)
}
2. render实现具名普通插槽
用template:
<template>
<div>
<slot name="t1"></slot>
<slot name="t2"></slot>
</div>
</template>
用render:
render: function(createElement){
return createElement('div', [this.$slots.t1, this.$slots.t2]);
}
3. render实现作用域默认插槽和普通插槽
用template:
<template>
<div>
<slot :title="title"></slot>
<slot name="t1" :title="title"></slot>
</div>
</template>
用render:
render: function(createElement){
return createElement('div', [
this.$scopedSlots.default({title: this.title}),
this.$scopedSlots.t1({title: this.title})
])
}
在父组件中的模板(假设子组件的名字为Test):
<template>
<div>
<Test>
<template v-slot="p1">这个是默认的作用域插槽: {{ p1.title }}</template>
<template v-slot:t1="p2">这是是具名作用域插槽: {{ p2.title }}</template>
</Test>
</div>
</template>
<div id="test">
<my>
<template slot:t1>hello</template>
</my>
</div>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="t1">
<test>
<slot name='t'></slot>
</test>
</div>
</body>
<script type="text/javascript">
Vue.component('test', {
render: function(createElement){
return createElement('div', {
slot:'t',
domProps: {
innerHTML: '123'
},
})
}
});
new Vue({
el: '#t1'
})
</script>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="t1">
<test>
<slot name='t'>123</slot>
</test>
</div>
</body>
<script type="text/javascript">
Vue.component('test', {
render: function(createElement){
return createElement('div', {
slot:'t',
domProps: {
innerHTML: 'baz'
},
})
}
});
new Vue({
el: '#t1'
})
</script>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="t1">
<test>
<template v-slot:t>123</template>
</test>
</div>
</body>
<script type="text/javascript">
Vue.component('test', {
render: function(h){
return this.$createElement('div', {
slot: 't'
})
}
});
new Vue({
el: '#t1'
})
</script>
</html>