# 導航欄不默認返回好麻煩
更新于2022/1/26
-----
自2.0.19以后增加屬性autoBack,可以滿足默認返回的需求,只需要簡單的二次封裝就可以。
> 本文作者:不愛喝橙子汁
-----
## 原文章
---
問就是**設計如此**,不過這也確實是痛點,所以本文提供二次封裝的思路。
```vue
<template>
<u-navbar :bgColor="backgroundColor" v-bind="$attrs" safeAreaInsetTop @rightClick="$emit('rightClick', $event)" @leftClick="onLeftClick($event)">
<template v-slot:left v-if="noBack">
<view></view>
</template>
</u-navbar>
</template>
<script>
export default {
inheritAttrs: false, // 必須,防止屬性綁定在根節點上
props: {
noBack: {
type: Boolean,
default: false
}
},
computed: {
backgroundColor() {
return '#fff';
}
},
methods: {
onLeftClick($event) {
if (this.$listeners.back) { // 如果外界有監聽@back事件則觸發,否則直接返回
this.$emit('back', $event);
} else {
uni.navigateBack();
}
}
}
};
</script>
```
1. $attrs表示所有寫在組件上但未被prop指明接收但集合
2. $listeners表示外界在這個組件上所有監聽的事件。
這樣當你不在組件上訂閱@back事件時,組件就會默認返回上一頁,而如果你想自己處理返回事件,只要處理@back事件就可以了,它會自動阻止默認行為。
但是你**最好認為他們僅在H5平臺上有效**,它有兼容性問題,比如微信小程序上就沒有這兩個屬性。
> 本文作者: 不愛喝橙子汁
- 自述
- 學會提問
- 起步
- 安裝
- 版本升級
- 1.x 升級 2.x 常見問題
- 命令行模式下node-sass安裝錯誤
- 查看版本
- uView UI 1.x 相關問題
- 安裝
- Popup 彈窗
- tabs 標簽
- Waterfall 瀑布流
- Table 表格
- Dropdown 下拉菜單
- uview-ui組件篇
- u-upload監聽beforeRead事件無效
- 組件怎么關不了
- 導航欄不默認返回好麻煩
- ref怎么獲取不到
- z-index拉滿都覆蓋不了map
- u-text對手機號脫敏
- u-input的placeholder去不掉
- 服務端返回數據,form表單驗證錯誤
- checkbox增加選中面積
- uview-ui組件篇/checkbox無法取消選中
- 小程序輸入框的placeholder會穿透到彈出層
- JavaScript篇
- 判斷數據類型
- 數組操作
- 節流與防抖函數
- this怎么就不對
- 計算地圖上兩點間的距離
- CSS篇
- 我要超出顯示省略號
- uniapp中小程序樣式穿透問題
- 關鍵幀與動畫
- CSS動畫屬性總結
- 過渡與動畫
- 正則表達式篇
- 身份證號
- 手機號
- 是否合法的http/https域名
- 數據處理篇
- 對數組分組
- 深拷貝對象
- 提取數組屬性
- 提取對象屬性
- 常見問題
- 如何給由組件觸發的事件中傳入自定義的參數
- 分類的雙列聯動
- 三級聯動的實現
- 小程序預覽提示包過大
- 框架安裝失敗
- 表格、瀑布流、下拉列表 組件為什么沒有了
- tabBar組件怎么用
- 時間、日歷、選擇器相關問題
- 字體圖標不顯示
- class 或 /deep/ 不生效