| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /**
- * Route Util
- * @邠心vbe on 2023/02/13
- */
- import { CommonActions } from '@react-navigation/routers';
- import React, { Component } from 'react';
- import { View } from 'react-native';
- import { PagerList } from '../pages/chargeV2/ChargeAdapter';
- import { PageList } from '../pages/Router';
- const routeUtil = {
- /**
- * 重置路由并导航到首页
- * @param {Object} props 页面道具
- */
- resetToHome: (props) => {
- if (props.navigation) {
- props.navigation.reset({
- index: 0,
- routes: [{
- name: PageList.home
- }]
- });
- }
- },
- /**
- * 重置路由并导航到指定路由
- * @param {Object} props 页面道具
- * @param {Array} routes 指定路由
- */
- resetHome2Page: (props, routes=[]) => {
- if (props.navigation) {
- props.navigation.reset({
- index: routes.length,
- routes: [
- {
- name: PageList.home,
- },
- ...routes
- ]
- })
- }
- },
- /**
- * 跳转到新页面并清除当前页面
- * @param {Object} props 页面道具
- * @param {Object} route 需要导航的路由
- */
- redirectTo: (props, route) => {
- if (props.navigation) {
- props.navigation.dispatch(state => {
- var routes = []
- routes = JSON.parse(JSON.stringify(state.routes))
- routes.pop();
- routes.push(route);
- return CommonActions.reset({
- index: routes.length - 1,
- routes: routes
- })
- });
- }
- },
- /**
- * 导航到中转页面
- * @param {String} route 需要导航的路由名称
- */
- bridge2Page: (route) => {
- startPage(PageList.bridge, {route: route})
- },
- /**
- * 导航到中转页面
- * @param {Array} routes 需要导航的路由
- */
- bridge2Pages: (routes=[]) => {
- startPage(PageList.bridge, {routes: routes})
- }
- }
- export default routeUtil;
- export class BridgePage extends Component {
- constructor(props) {
- super(props);
- this.state = {
- params: ""
- };
- }
- componentDidMount() {
- const routes = this.props.route?.params?.routes
- const route = this.props.route?.params?.route
- if (route) {
- startPage(route);
- } else if (routes) {
- console.log('bridge', routes);
- setTimeout(() => {
- routeUtil.resetHome2Page(this.props, routes)
- }, 500);
- }
- this.props.navigation.addListener('focus', e => {
- console.log('bridge.focus', this.props.route?.params)
- if (this.state.params) {
- routeUtil.resetToHome(this.props)
- } else {
- this.setState({
- params: true
- })
- }
- });
- }
- render() {
- return (
- <View style={ui.flex1}>
- </View>
- );
- }
- }
|