Especifique el nombre de la ranura dentro de la función de procesamiento como se muestra a continuación:
return createElement(rootcmp, { default: [ createElement(childCmp) ], temp: [ createElement(childCmp2) ] } );
Desde dentro de la función de representación, especifique el nombre de la ranura, como 'predeterminado', 'temp' al crear elementos secundarios.
return createElement(rootcmp, { default: [ createElement(childCmp) ], temp: [ createElement(childCmp2) ] } );
Código completo a continuación:
@Component({
props:[]
})
export class TestComponent extends Widget{
items:any[];
render(createElement:any){
const rootcmp = {
template:`<div>
Temp:<slot name="temp"></slot>
Default:<slot></slot>
</div>`
, data:()=>{
return {};
}
}
const childcmp = {
template:'<div slot="default">This is child</div>'
, data:()=>{
return {};
}
}
const childcmp2 = {
template:'<div slot="temp">This is child</div>'
, data:()=>{
return {};
}
}
return createElement(rootcmp
, { default: [ createElement(childcmp) ], temp:[ createElement(childcmp2) ]);
}
}
Comportamiento esperado:
<div>
Temp:<div>This is child</div>
Default:<div>This is child</div>
</div>
Usa createElement(childcmp, { slot: 'temp' })
.
@ yyx990803 ¿hay alguna razón técnica por la que debamos proceder como está? esta forma es muy poco práctica cuando se trata de nodos generados recursivamente en un lote grande, me pregunto si hay alguna buena razón por la que no podamos hacerlo mejor.
En realidad, este createElement(childcmp, { slot: 'temp' })
no tiene ningún efecto en una tragamonedas.
Creó un informe de errores: https://github.com/vuejs/vue/issues/11519
Comentario más útil
Usa
createElement(childcmp, { slot: 'temp' })
.