最佳實務:Vue 3 中將元件附加到 DOM 的方法
P粉362071992
P粉362071992 2023-08-24 19:51:03
0
2
524

我想在我的Vue 3應用程式中動態建立一個元件,該元件在單一檔案元件(SFC)中,並將其附加到DOM。我正在使用

ErrorTrigger.vue:每當發生點擊事件時,我們向errors物件推送一個錯誤

 

完整範例:https://stackblitz.com/edit/vitejs-vite-mcjgkl

    P粉598140294

    選項1:使用createVNode(component, props)render(vnode, container)

    建立:使用createVNode()建立一個帶有props的元件定義的VNode(例如,從*.vue導入的SFC),可以將其傳遞給render()在給定的容器元素上渲染。

    銷毀:呼叫render(null, container)會銷毀附加到容器的VNode。當父元件卸載時(透過unmounted生命週期鉤子)應該呼叫此方法進行清理。

    // renderComponent.js import { createVNode, render } from 'vue' export default function renderComponent({ el, component, props, appContext }) { let vnode = createVNode(component, props) vnode.appContext = { ...appContext } render(vnode, el) return () => { // destroy vnode render(null, el) vnode = undefined } }

    注意:此方法依賴內部方法(createVNoderender),這些方法在未來的版本中可能會進行重構或刪除。

    示範1

    選項2:使用createApp(component, props)app.mount(container)

    #建立:使用createApp()建立一個應用程式實例。此實例具有mount()方法,可用於在給定的容器元素上渲染元件。

    銷毀:應用實例具有unmount()方法來銷毀應用程式和元件實例。當父元件卸載時(透過unmounted生命週期鉤子)應該呼叫此方法進行清理。

    // renderComponent.js import { createApp } from 'vue' export default function renderComponent({ el, component, props, appContext }) { let app = createApp(component, props) Object.assign(app._context, appContext) // 必须使用Object.assign在_context上 app.mount(el) return () => { // 销毁app/component app?.unmount() app = undefined } }

    注意:此方法為每個元件建立一個應用實例,如果需要在文件中同時實例化多個元件,可能會產生不小的開銷。

    示範2

    範例用法

     
      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!