search.vue里面的dom如下:
<div class="search-history" v-show="searchHistory.length ">
<h1 class="title">
<span class="text">搜索历史</span>
<span class="clear">
<i class="icon-clear"></i>
</span>
</h1>
<search-list :searches="searchHistory"></search-list>
</div>
css样式如下:
.search-history
position: relative
margin: 0 20px
.title
display: flex
align-items: center
height: 40px
font-size: $font-size-medium
color: $color-text-l
.text
flex: 1
.clear
extend-click()
.icon-clear
font-size: $font-size-medium
color: $color-text-d
然后新建一个公共的组件:
<template>
<div class="search-list" v-show="searches.length">
<ul>
<li class="search-item" v-for="(item, index) in searches" :key="index">
<span class=text>{{item}}</span>
<span class="icon">
<i class="icon-delete"></i>
</span>
</li>
</ul>
</div>
</template>
<script>
export default {
props: {
searches: {
type: Array,
default () {
return []
}
}
}
}
</script>
<style lang="stylus" scoped>
@import '~common/stylus/variable'
.search-list
.search-item
display flex
align-items center
height 40px
.text
flex 1
color $color-text-l
.icon
extend-click()
.icon-delete
font-size $font-size-small
color $color-text-d
</style>
search.vue里面使用组件,把searchHistory的数据传递给子组件:
<search-list :searches="searchHistory"></search-list>