您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關header組件怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、 header 組件開發 之數據的傳遞
1. App.vue 引入組件
import header from './components/header/header'
2. App.vue 中注冊組件
export default { components:{ v-header:header } }
3. 使用組件
<v-header :sell="sellerObj"></v-header>
解釋::sell="sellerObj",這里就像一個函數傳參一樣把sell當成形參,sellerObj就是實參,那么父組件實參是怎么傳給子組件的,通過什么傳
4. 父組件向子組件傳遞數據
在父組件中需要將sellerObj作為數據導出,子組件通過props從父組件中獲得數據,且要指定數據類型
export default { props:{ // 子組件獲取 父組件 數據 sell:{ type:Object // 傳遞的類型 } } }
小結:
子組件在props中創建一個屬性,用以接收父組件傳過來的值
父組件中注冊子組件
在子組件標簽中添加子組件props中創建的屬性
把需要傳給子組件的值賦給該屬性
5. 調用數據
<p class="logo"> <img :src="sell.avatar" alt="" width='64' height='64'/> </p> <span class="name">{{sell.name}}</span> <p class="description"> {{sell.description + '/' + sell.deliveryTime + '分鐘送達'}} </p>
細節問題:
support 綁定數據時 加 v-if ='sell.supports'
理由 : 在我們通過axios獲取數據前在父組件中創建了一個空的對象sellerObj 先傳給子組件,開始 沒有數據傳送過去就會報錯 underfined,加上 v-if ,接受不到數據就不會解析,也就不會報錯。
二、 header 組件彈出層(詳情)
1.彈出遮罩層
(1) 設置一個狀態,判斷該狀態控制顯示隱藏
data (){ return { detailShow:false } }
<p v-if="detailShow" class="detail"></p>
(2) 綁定點擊事件,通過methods 方法改變 狀態,控制顯隱效果
<p class="bulletin-wrapper" @click="showDetails()" ></p> <p class="detail-close" v-if="sell.supports"> <i class="icon-close" @click="hideDetail()"></i> </p>
methods:{ showDetails () { this.detailShow=true }, hideDetail () { this.detailShow=false } }
2. 星級評分
(1) 綁定class 控制星級大小的類型
// 利用 computed 屬性 <p class="star" :class="starSizeType"></p>
computed: { starSizeType() { // 返回 星級的大小類型 48/36/24 return 'star-' + this.size; } }
(2) 遍歷星星的數量
復制代碼 代碼如下:
<span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>
(3) 定義常量 控制 每個星的狀態
// 類名用變量存起來 const LENGTH = 5 // 星星長度 const CLS_ON = 'on' // 全星 const CLS_HALF = 'half' // 半星 const CLS_OFF = 'off'// 空星
(4) 通過計算 判斷每個span 的類型
itemClasses () { // 返回一個數組為每個span 的類名 (遍歷) let spanClassList=[]; // 利用 實參評分來判斷 有幾顆全星,半星,空星 let scores=( Math.floor(this.score * 2) ) / 2 let intNum= Math.floor(scores); // 全星個數 let HashalfNum= scores % 1 !== 0 // 半星 for(var i=0;i<intNum;i++){ // 遍歷全星的span spanClassList.push(CLS_ON) } if(HashalfNum){ // 如果有半星 加類名 spanClassList.push(CLS_HALF) } while(spanClassList.length<LENGTH){// 判斷 是否有空星 及個數 spanClassList.push(CLS_OFF) } return spanClassList; } }
(5) 通過 動態綁定class 來 給span 加類名
<p class="star" :class="starSizeType"> <span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span> </p>
關于“header組件怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。