Vue動態組件與內置組件淺析講解

一、動態組件

在vue中,有很多的組件可以掛載同一個掛載點上面,要在同一個掛載的點上的多個組件之間可以實現動態的切換渲染,我們可以通過內置組件component的is屬性動態的綁定組件,然後我們就可以根據is的值來決定哪一個組件要被渲染,非常的方便。

我們通過一點簡單的實例代碼可以加深瞭解:

示例代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>組件之間的傳遞</title>
</head>
<body>
    <div id="app">
        <h1>小小閑置網</h1>
<input type="radio" name="tab" value="qiubite1" v-model="cfl">王者賬號:
<img src="C:\Users\Administrator\Desktop\李寶\wangzhe.jpg" alt="" style="width: 30px;height:30px">
<input type="radio" name="tab" value="qiubite2" v-model="cfl">電話:
<input type="radio" name="tab" value="qiubite3" v-model="cfl">估價:
<component v-bind:is="cfl"></component>
</component>
    </div>
     <template id="n1">
        <div style="width: 200px;height: 200px;border: 2px solid rgb(100, 100, 196);">
            <h1>賬號</h1>
            <input type="text" placeholder="輸入你的賬號:">
        </div>
     </template>
     <template id="n2">
        <div style="width: 200px;height: 200px;border: 2px solid rgb(100, 100, 196);">
            <h1>電話</h1>
            <input type="text" placeholder="輸入你的電話:">
        </div>
     </template>
     <template id="n3">
        <div style="width: 200px;height: 200px;border: 2px solid rgb(100, 100, 196);">
            <h1>估價:</h1>
            <input type="text" placeholder="你心儀賣出的價格:">
        </div>
     </template>
    <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
var  vm = new Vue({
    el:"#app",
    data:{cfl:"qiubite1"},
    components:{
            'qiubite1':{template:'#n1'},
            'qiubite2':{template:'#n2'},
            'qiubite3':{template:'#n3'},
    }
})
    </script>
</body>
</html>

運行結果:

我們可以看到三個按鈕的value的值設置成瞭組件的名字,雙向綁定cfl(懲罰陸,沒什麼含義,自己亂起的)數據,單擊按鈕,就可以改變value的值從而更新cfl裡面的值;component組件的is屬性動態的綁定瞭cfl裡面的值,根據這個is就知道哪個組件被渲染瞭。

二、內置組件

根據上面的實例結果,我們看到瞭輸入框裡輸入數據,當你切換到別的組件的時候,原來組件的數據不會被保存,所以內置組件可以包裹我們的動態組件,會將往期的組件進行緩存,而不是銷毀,他會把切換回去的組件緩存起來,做到保留組件狀態。

實例代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>組件之間的傳遞</title>
</head>
<body>
    <div id="app">
        <h1>小小閑置網</h1>
<input type="radio" name="tab" value="qiubite1" v-model="cfl">王者賬號:
<img src="C:\Users\Administrator\Desktop\李寶\wangzhe.jpg" alt="" style="width: 30px;height:30px">
<input type="radio" name="tab" value="qiubite2" v-model="cfl">電話:
<input type="radio" name="tab" value="qiubite3" v-model="cfl">估價:
<keep-alive><component v-bind:is="cfl"></component></keep-alive>
</component>
    </div>
     <template id="n1">
        <div style="width: 200px;height: 200px;border: 2px solid rgb(100, 100, 196);">
            <h1>賬號</h1>
            <input type="text" placeholder="輸入你的賬號:">
        </div>
     </template>
     <template id="n2">
        <div style="width: 200px;height: 200px;border: 2px solid rgb(100, 100, 196);">
            <h1>電話</h1>
            <input type="text" placeholder="輸入你的電話:">
        </div>
     </template>
     <template id="n3">
        <div style="width: 200px;height: 200px;border: 2px solid rgb(100, 100, 196);">
            <h1>估價:</h1>
            <input type="text" placeholder="你心儀賣出的價格:">
        </div>
     </template>
    <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <script>
var  vm = new Vue({
    el:"#app",
    data:{cfl:"qiubite1"},
    components:{
            'qiubite1':{template:'#n1'},
            'qiubite2':{template:'#n2'},
            'qiubite3':{template:'#n3'},
    }
})
    </script>
</body>
</html>

運行結果:

以上就是Vue動態組件與內置組件淺析講解的詳細內容,更多關於Vue動態組件與內置組件的資料請關註WalkonNet其它相關文章!

推薦閱讀: