Vue: Tidak dapat menentukan nama slot di dalam fungsi render (createElement)

Dibuat pada 28 Mei 2017  ·  3Komentar  ·  Sumber: vuejs/vue

Masalah apa yang dipecahkan oleh fitur ini?

Tentukan nama slot dalam fungsi render seperti di bawah ini:

return createElement(rootcmp, { default: [ createElement(childCmp) ], temp: [ createElement(childCmp2) ] } );

Seperti apa tampilan API yang diusulkan?

Dari dalam fungsi render, tentukan nama slot seperti 'default', 'temp' saat membuat elemen turunan.

return createElement(rootcmp, { default: [ createElement(childCmp) ], temp: [ createElement(childCmp2) ] } );

Kode lengkap di bawah ini:

@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) ]);
    }
}

Perilaku yang diharapkan:

<div>
      Temp:<div>This is child</div>
      Default:<div>This is child</div>
</div>

Komentar yang paling membantu

Gunakan createElement(childcmp, { slot: 'temp' }) .

Semua 3 komentar

Gunakan createElement(childcmp, { slot: 'temp' }) .

@yyx990803 apakah ada alasan teknis mengapa kita perlu melanjutkan apa adanya? cara ini sangat tidak praktis ketika berhadapan dengan node yang dihasilkan secara rekursif dalam batch besar, saya ingin tahu apakah ada alasan bagus mengapa kita tidak bisa melakukan yang lebih baik.

Sebenarnya createElement(childcmp, { slot: 'temp' }) ini tidak berpengaruh pada slot.

Membuat laporan bug: https://github.com/vuejs/vue/issues/11519

Apakah halaman ini membantu?
0 / 5 - 0 peringkat