React-Native在登陸成功或注銷后銷毀路由,只保留當前棧


前言

在移動APP中,我們經常會遇到登陸成功,或者注銷后,不允許返回上一頁面,這就需要我們清楚棧中的其余view, RN中我們應該如何處理呢?

方法

主要原理是借助於onDidFocus和immediatelyResetRouteStack兩個方法實現。

對此我們先看看Navigator提供給我們默認的方法有哪些?

  • getCurrentRoutes() - 獲取當前棧里的路由,也就是push進來,沒有pop掉的那些。
  • jumpBack() - 跳回之前的路由,當然前提是保留現在的,還可以再跳回來,會給你保留原樣。
  • jumpForward() - 上一個方法不是調到之前的路由了么,用這個跳回來就好了。
  • jumpTo(route) - 跳轉到已有的場景並且不卸載。
  • push(route) - 跳轉到新的場景,並且將場景入棧,你可以稍后跳轉過去
  • pop() - 跳轉回去並且卸載掉當前場景
  • replace(route) - 用一個新的路由替換掉當前場景
  • replaceAtIndex(route, index) - 替換掉指定序列的路由場景
  • replacePrevious(route) - 替換掉之前的場景
  • resetTo(route) - 跳轉到新的場景,並且重置整個路由棧
  • immediatelyResetRouteStack(routeStack) - 用新的路由數組來重置路由棧
  • popToRoute(route) - pop到路由指定的場景,在整個路由棧中,處於指定場景之后的場景將會被卸載。
  • popToTop() - pop到棧中的第一個場景,卸載掉所有的其他場景。

在具體使用中,我們需要添加一個onDidFocus屬相,然后判斷當前路由是否要求重置整個線路。

<Navigator ref="navigator" initialRoute={{name: LaunchView}} renderScene={this.renderScene} configureScene={this.configureScene} onDidFocus={(route) => { if (route.reset) { this.refs.navigator.immediatelyResetRouteStack([{ name: route.name }]) } }} />

使用方法:

this.props.navigator.push({name: yourview Name,reset:true});

ok,搞定了!

React-Native在登陸成功或注銷后銷毀路由,只保留當前棧

標簽:number   script   cep   哪些   nat   markdown   ade   如何   esc   

原文地址:http://blog.csdn.net/jiangbo_phd/article/details/60871434


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM