bctop
bctop
  • 发布:2020-08-31 15:19
  • 更新:2020-12-01 18:44
  • 阅读:1398

subNvue背景色与生命周期

分类:uni-app

我在体验了 subNvue 确实从流畅度来说 比uni-popup 好了很多

不过在使用后发现3个问题 觉得奇怪

  1. subNVue 如何更改 背景色;现在subnvue 默认背景为白色,这个不可调整, 如果自定义的弹窗有圆角 该怎么办;建议subnvue 背景色 可设置
  2. subNVue 生命周期 只有Onshow 会触发;且只会触发一次 这使得 多次使用不能对他执行初始化,只能用uni.$on ;
  3. 如果父页面与子页面都用一个 subNVue 那么 在父页面进入子页面后 子页面的sunNvue 事件也将触发父页面的 subNuve的事件,所以父页面 需要再onHide 先 uni.$off 才可以进入子页面;可是在pages.json 他们是分开定义的。
2020-08-31 15:19 负责人:无 分享
已邀请:
闪到腰的咸鱼

闪到腰的咸鱼

针对背景色无法改变,建议在pages.json中这样配置:

{  
    "id": "guide",  
    "path": "pages/index/component/subnvue/index-guide",  
    "type": "popup",  
    "style": {  
        "width": "100%",  
        "height": "50%",  
        "bottom": "0",  
        "left": "0",  
        "background": "transparent",  
        "mask": "rgba(0,0,0,0.3)"  
    }  
}

在subnvue页面中这样写:(为了方便,css就写在style里面)

<div style="background-color:#f00; border-top-left-radius:15rpx; border-top-right-radius:15rpx;" @click.prevent="clickHandle">  
        <!--这里写你的内容-->  
    </div>

注意:要在div标签上面加上 @click.prevent,否则点击subnvue内容处会关闭subnvue

以上都是经验之谈,有错误的地方望指点一二,共同进步

闪到腰的咸鱼

闪到腰的咸鱼

针对生命周期只触发一次,每次打开subnvue时,需要初始化的解决方法是在subnvue生命周期里面写上这些东西:

const _subnvue= uni.getCurrentSubNVue()  
_subnvue.addEventListener('show', () => {  
    console.log('show');  
})  
_subnvue.addEventListener('hide', () => {  
    console.log('hide');  
})

这样每次打开关闭subnvue就都能执行你想要的操作

  • 4***@qq.com

    安卓没问题,ios 会一直执行监听的hide

    2022-06-14 18:13

  • 闪到腰的咸鱼

    回复 4***@qq.com: 其实也完全没必要用subnvue,用 uni-popup 这个组件就挺好的

    2022-06-22 16:57

前端JASON

前端JASON - 接单uniapp项目&插件/联系front_jason/主页daxiong.site

为了你这个问题,我特地去写了一个demo: https://ext.dcloud.net.cn/plugin?id=3559

该问题目前已经被锁定, 无法添加新回复