2021-09-25 08:51:32 +00:00
< docs >
-- -
order : 5
title :
zh - CN : 列表
en - US : List
-- -
# # zh - CN
在列表组件中使用加载占位符 。
# # en - US
Use skeleton in list component .
< / docs >
< template >
< div >
< a -switch :checked ="!loading" @change ="onChange" / >
< a -list item -layout = " vertical " size = "large" :data-source ="listData" >
< template # renderItem = "{ item }" >
< a -list -item key = "item.title" >
< template v -if = " ! loading " # actions >
< span v-for ="{ type, text } in actions" :key ="type" >
< component :is ="type" style = "margin-right: 8px" > < / component >
{ { text } }
< / span >
< / template >
< template # extra >
< img
v - if = "!loading"
width = "272"
alt = "logo"
src = "https://gw.alipayobjects.com/zos/rmsportal/mqaQswcyDLcXyDKnZfES.png"
/ >
< / template >
< a -skeleton :loading ="loading" active avatar >
< a -list -item -meta :description ="item.description" >
< template # title >
< a :href ="item.href" > { { item . title } } < / a >
< / template >
< template # avatar > < a -avatar :src ="item.avatar" / > < / template >
< / a - l i s t - i t e m - m e t a >
{ { item . content } }
< / a - s k e l e t o n >
< / a - l i s t - i t e m >
< / template >
< / a - l i s t >
< / div >
< / template >
< script lang = "ts" >
import { StarOutlined , LikeOutlined , MessageOutlined } from '@ant-design/icons-vue' ;
import { defineComponent , ref } from 'vue' ;
interface DataItem {
href : string ;
title : string ;
avatar : string ;
description : string ;
content : string ;
}
const listData : DataItem [ ] = [ ] ;
for ( let i = 0 ; i < 3 ; i ++ ) {
listData . push ( {
href : 'https://www.antdv.com/' ,
title : ` ant design vue part ${ i } ` ,
2022-03-12 01:56:32 +00:00
avatar : 'https://joeschmoe.io/api/v1/random' ,
2021-09-25 08:51:32 +00:00
description :
'Ant Design, a design language for background applications, is refined by Ant UED Team.' ,
content :
'We supply a series of design principles, practical patterns and high quality design resources (Sketch and Axure), to help people create their product prototypes beautifully and efficiently.' ,
} ) ;
}
export default defineComponent ( {
components : {
StarOutlined ,
LikeOutlined ,
MessageOutlined ,
} ,
setup ( ) {
const loading = ref < boolean > ( true ) ;
const actions = [
{ type : 'star-outlined' , text : '156' } ,
{ type : 'like-outlined' , text : '156' } ,
{ type : 'message-outlined' , text : '2' } ,
] ;
const onChange = ( checked : boolean ) => {
loading . value = ! checked ;
} ;
return {
loading ,
listData ,
actions ,
onChange ,
} ;
} ,
} ) ;
< / script >
< style scoped >
. skeleton - demo {
border : 1 px solid # f4f4f4 ;
}
< / style >