基于Vant 3 - NavBar组件封装的导航栏

456 阅读1分钟
<template>
    <div class='top-header'> 
        <div class='head-bar'></div>
        <div class='head-title'>
            <img 
              v-if="!isDisplay"
              class="back-icon"
              src="@/assets/xxx"
              alt=""
              @click="backClickTo"
             />
             <span>{{ title }}</span>
             <img
               v-if="isSearch"
               class="search-icon"
               src="@/assets/xxx"
               alt=""
               @click="searchClick"
             />
             <div class="address_search">
               <van-icon
                 name="location-o"
                 v-if="isPosition"
                 class="position"
                 @click="searchClick"
               />
               <span v-if="isPosition" @click="handleAddress()">{{address}}</span>
             </div> 
         </div>
     </div>
</template>

<script>
import { reactive, toRefs } from 'vue'

export default {
    name: 'HeaderTop',
    props: ['title', 'isSearch', 'isPosition', 'address', 'isDisplay'],
    emits: ['goback', 'toSearch', 'handleAddress'],
    setup(props, context) {
        const current = reactive({
            title: props.title,
            isSearch: props.isSearch,
            isPosition: props.isPosition,
            address: props.address
        )
        const backClickTo = () = {
            context.emit('goback')
        }
        const searchClick = () => {
            context.emit('toSearch')
        }
        const handleAddress = () => {
            context.emit('handleAddress')
        }
        const updateAddress = (newAddress) => {
            current.address = newAddress
        }
        
        return {
            ...toRefs(current),
            backClickTo,
            searchClick,
            handleAddress,
            updateAddress
        }
    },
}
</script>