亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不渲染的情況下獲取 vue 組件的 DOM?

如何在不渲染的情況下獲取 vue 組件的 DOM?

largeQ 2023-05-25 18:09:36
假設我有一個像這樣的簡單 Vue 組件:Vue.component('blog-post', {  props: ['title'],  template: '<h3>{{ title }}</h3>'})我不想渲染組件。我只想title以某種方式將其傳遞到blog-post我的腳本代碼中的組件中,并相應地獲取 DOM。例如,如果我傳遞標題值Hello,那么我希望完整的 DOM 為<h3>Hello</h3>. 我會將 DOM 分配給一個變量以備后用。
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

一種解決方案是創建一個僅包含目標組件$mountit 的新 Vue 實例,然后獲取outerHTML$el(根元素)的:

視圖 2

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>


<script>

Vue.component('blog-post', {

? props: ['title'],

? template: '<h3>{{ title }}</h3>'

})


const app = new Vue({

? template: `<blog-post title="Hello world" />`

}).$mount()


console.log(app.$el.outerHTML)

</script>

視圖 3

在 Vue 3 中,創建一個應用程序實例,并mount()在新創建的<div>.?的返回值mount()是根組件,其中包含$el

<script src="https://unpkg.com/[email protected]/dist/vue.global.prod.js"></script>


<script>

const app = Vue.createApp({

? template: `<blog-post title="Hello world" />`

})


app.component('blog-post', {

? props: ['title'],

? template: '<h3>{{ title }}</h3>'

})


const comp = app.mount(document.createElement('div'))


console.log(comp.$el.outerHTML)

</script>


查看完整回答
反對 回復 2023-05-25
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

如果要獲取組件的 HTML,則必須使用父元素的ref屬性。

嘗試這樣的事情:

<!DOCTYPE html>

<html>

? <head>

? ? <meta charset="UTF-8" />

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0" />

? ? <title>Document</title>

? ? <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

? </head>

? <body>

? ? <div id="app">

? ? ? <div>

? ? ? ? <button @click="logComponentBlogPost">Log Component</button>

? ? ? </div>


? ? ? <div v-show="false" ref="BlogPost">

? ? ? ? <blog-post title="Hello Word"></blog-post>

? ? ? </div>

? ? </div>


? ? <script>

? ? ? let BlogPost = Vue.component('BlogPost', {

? ? ? ? props: ['title'],

? ? ? ? template: '<h3>{{ title }}</h3>',

? ? ? });


? ? ? new Vue({

? ? ? ? el: '#app',

? ? ? ? components: { BlogPost },

? ? ? ? methods: {

? ? ? ? ? logComponentBlogPost() {

? ? ? ? ? ? console.log(this.$refs.BlogPost.innerHTML);

? ? ? ? ? },

? ? ? ? },

? ? ? });

? ? </script>

? </body>

</html>


查看完整回答
反對 回復 2023-05-25
  • 1 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號