前言
在移動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