HarmonyOS 鸿蒙Next Navigation 你们觉得好用?根页面如何替换。

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Navigation 你们觉得好用?根页面如何替换。

程序启动加载index页面,判断你是否登录,没有登录显示登录页面,登录成功替换成首页。这时想让首页成为根页面,如何做。如果隐藏导航条,或者自定义导航条。没有返回按钮,但是侧滑是可以返回上一页的,并且他一直会存在。 启动加载页只能是index ,因为其他的页面都是独立的静态module。写鸿蒙的应用大部分时候让我感觉到很爽,但是这个导航条真的让我一言难尽,配置多,代码多。别喷我,因为干了将近10年的iOS 和安卓,习惯iOS的push页面,和设置根控制器。很人性化。鸿蒙我只能说我还没吃透。


更多关于HarmonyOS 鸿蒙Next Navigation 你们觉得好用?根页面如何替换。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复
@Entry
@ComponentV2
struct Index {
  @Local isSplash: boolean = true
  @Local isLogin: boolean = false

  aboutToAppear(): void {
    setTimeout(() => {
      this.isSplash = false
    }, 1000)
  }

  build() {
    Navigation() {
      if (this.isSplash) {
        Text('Splash')
      } else if (!this.isLogin) {
        LoginIndex({ isLogin: this.isLogin!! })
      } else {
        HomeIndex()
      }

    }.size({ width: '100%', height: '100%' })
  }
}

@ComponentV2
struct LoginIndex {
  @Param isLogin: boolean = false
  @Event $isLogin: (isLogin: boolean) => void = () => {
  }

  build() {
    Text('login')
      .onClick(() => {
        this.$isLogin(true)
      })
  }
}

@ComponentV2
struct HomeIndex {
  build() {
    Text('Home')
  }
}

更多关于HarmonyOS 鸿蒙Next Navigation 你们觉得好用?根页面如何替换。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Navigation好用吗?不好用,比如通用动画不支持设置。子页面要包裹特定布局。 根页面如何替换,if else 就行。看生命周期,if else 切换Compoent应该是直接移除的,没有做缓存,不占用内存。长期占用的应该是boolean值

导航条设置(导航条这个东西,有一个算一个,都是垃圾。在安卓上甚至不如三大金刚。都怪iOS带头)

let windowClass = window.findWindow(this.getUIContext().getWindowName()) windowClass.setWindowSystemBarEnable([‘status’]) windowClass.setWindowSystemBarProperties({}) 返回拦截是onbackPress(话说,干一年安卓,对这个应该也熟悉吧)

onbackPress 返回false 他也不管用,需要在路由栈去拦截。

没有登录的情况下,index 承载的是登录页面,Navigation也是最外层的,登录完毕进入首页。进入首页后,如果需要做分屏-多适配,也就是左边首页内容,右边详情页内容考虑平板设备或者折叠屏。该如何设置。我的方案,index页承载 login 的 组件和首页组件。然后做登录后的判断移除login 。这样合适?

1.个人在项目实战过程中,将几个首页页面做成Component,tab+几个首页component 作为 Navigation的根容器元素作为容器默认根页面,并且在首页注册 emitter事件监听。

2.登录:  在首页生命周期中判断是否已经登录,没有登录,通过navPathStack跳转到登录页面,登录成功,发射登录成功事件,首页监听到登录成功事件,重新查询人员相关信息,渲染UI。navPathStack.clear(),进入首页。

4.其他页面的返回 通过系统函数 返回上一个页面

深色代码主题
复制
this.queryNavigationInfo()?.pathStack.pop();

3.关于navigation的配置,可以使用 系统路由表,很方便快捷。https://developer.huawei.com/consumer/cn/doc/atomic-guides-V5/atomic-intra-module-page-routing-V5#section1779564411204

首先非常感谢大家。试了n多种方法后,也只能用判断条件来决定跟容器的显示页面。目前问题已经解决。

HarmonyOS 鸿蒙Next Navigation提供了一种全新的导航模式,用户体验上较为流畅和直观。其设计初衷是为了更好地适应多设备融合的场景,实现应用在不同设备间的无缝切换和协同。

关于根页面的替换,在HarmonyOS中,这通常涉及到页面栈的管理。具体步骤如下:

  1. 获取当前页面栈:首先,你需要获取当前应用的页面栈,这是管理页面导航的基础。

  2. 移除旧根页面:在获取到页面栈后,你可以通过相关API将旧的根页面从栈中移除。这一步确保了新的根页面能够正确设置。

  3. 设置新根页面:移除旧根页面后,你可以将新的页面设置为根页面。这通常涉及到将新页面推送到页面栈的底部,并标记为根页面。

  4. 更新UI:完成上述步骤后,需要确保UI得到及时更新,以反映根页面的替换。

请注意,以上步骤是基于HarmonyOS的页面管理机制进行的描述,具体实现可能会因应用框架和版本的不同而有所差异。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部