# 导航栏不默认返回好麻烦
更新于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/ 不生效