我是橙子
我是橙子
  • 发布:2021-08-11 15:22
  • 更新:2023-07-12 11:42
  • 阅读:668

为什么不做一个vue-router一样的路由

分类:uni-app

为什么咱们的路由不做像vue router一样的 比如我们用uni.navigateTo的时候,完全可以做一些前置处理啊,
还有既然能获取到页面栈 也可以做全局路由守卫一样的东西吧,如果是小程序里没有相关的内容,也可以只兼容app啊!
没有像路由一样的功能,真的很难受
举个例子
uni.navigateTo({
url:'../vip/index',
before:(options)=>{
//路由前置回调 在跳转之前执行,可以像vue-router一样 如果返回false 则跳转不执行
//参数可为要跳转的路由地址 ,当前路由地址 什么的
},
after:(options)=>{
//路由后回调 在跳转之后执行,可以像vue-router一样 如果返回false 则跳转不执行
//参数可为要跳转的路由地址 ,当前路由地址 什么的
}
})
还有uni.navigateBack 完全可以传递参数给上个页面啊 现在没办法给上一页传递参数
当然还有原生导航栏的back按钮 返回的时候最好也可以传递下参数
麻烦官方的大佬们看下

2021-08-11 15:22 负责人:DCloud_UNI_FXY 分享
已邀请:
DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

  • 我是橙子 (作者)

    感谢,那原生导航栏返回按钮 怎么给上个页面传递参数呢?

    2021-08-11 15:47

  • DCloud_uniCloud_JSON

    回复 我是橙子:

    1.修改返回逻辑详情:https://ask.dcloud.net.cn/article/35120

    2.传递参数方法很多;推荐通过eventChannel实现。

    示例代码如下:


    // 2.8.9+ 支持  
    uni.navigateTo({
    url: 'pages/test?id=1',
    events: {
    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
    acceptDataFromOpenedPage: function(data) {
    console.log(data)
    },
    someEvent: function(data) {
    console.log(data)
    }
    ...
    },
    success: function(res) {
    // 通过eventChannel向被打开页面传送数据
    res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
    }
    })

    // uni.navigateTo 目标页面 pages/test.vue
    onLoad: function(option) {
    console.log(option.query)
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
    eventChannel.emit('someEvent', {data: 'test'});
    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', function(data) {
    console.log(data)
    })
    }

    2021-08-12 11:26

hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

要回复问题请先登录注册