В приложении My React Native есть несколько условий, при которых оно должно обрабатывать глубокие ссылки, когда пользователь нажимает на ссылку для приглашения.Я намеревался настроить прослушиватели ссылок в основном файле app.js, и при обнаружении глубокой ссылки мне нужно передать данные в представление Splash, чтобы определить несколько факторов, прежде чем добавлять пользователя в группу, в которую он приглашен.
Я использую React Navigation.Первоначально я пытался использовать redux, обновляя хранилище с помощью данных url, но столкнулся с проблемами синхронизации, так как страница Splash загружалась до обновления redux.Поэтому я попытался создать оболочку HOC для навигатора следующим образом:
HOC Linker:
import * as React from "react";
const Linker = (Component) => {
return ({ children, ...props }) => {
return (
<Component { ...props }>
{ children }
</Component>
);
}
};
export default Linker;
В моем файле JS приложенияЯ импортирую компоновщик и оборачиваю основной навигатор компонентом HOC.Затем я добавляю реквизит, который обновляется, когда метод React Native Linking обнаруживает глубокую ссылку.Он обновляет состояние с параметрами.
Приложение JS:
import Navigator from './ui/navigation/navigator';
const LinkerWrapper = Linker(Navigator);
render() {
return (
<LinkerWrapper linking={this.state.url} />
);
}
Мой файл навигатора выглядит следующим образом:
Навигатор:
import { createSwitchNavigator } from 'react-navigation';
import Splash from '../screens/splash/splash';
import AuthStack from './auth';
import AppStack from './app';
const Navigator = createSwitchNavigator({
Loading: Splash,
Auth: AuthStack,
App: AppStack
});
export default Navigator;
Когда я нажимаю на глубокую ссылку, приложение открывается, как и ожидалось, я анализирую URL-адрес и готовлю объект данных, состояние обновляется иСтраница-заставка воспроизводится, как и ожидалось, реквизиты пропускаются через HOC, но когда на компоненте Splash запускается метод componentWillReceiveProps, я не вижу никаких реквизитов из ссылки-проп.
![enter image description here](https://i.stack.imgur.com/L3pLq.png)
Я пробовал много разных вещей.Я действительно новичок, чтобы реагировать, поэтому я знаю, что, вероятно, делаю что-то в корне неправильно.Я предполагаю, что что-то упустил с React Navigation.Одна из вещей, которую я попробовал, состояла в том, чтобы изменить значение экрана на функцию, передаваемую в реквизитах.Я надеялся, что это волшебным образом заставит ссылочную опору появиться в реквизитах Splash.Ниже была моя попытка:
import React from 'react';
import { createSwitchNavigator } from 'react-navigation';
import Splash from '../screens/splash/splash';
import AuthStack from './auth';
import AppStack from './app';
const Navigator = createSwitchNavigator({
Loading: {
screen: props => <Splash { ...props }/>
},
Auth: AuthStack,
App: AppStack
});
export default Navigator;
К сожалению, это не сработало.Любая помощь будет оценена.
Спасибо.