Реагируйте на навигацию - передавайте реквизиты в навигатор - PullRequest
0 голосов
/ 13 октября 2018

В приложении 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

Я пробовал много разных вещей.Я действительно новичок, чтобы реагировать, поэтому я знаю, что, вероятно, делаю что-то в корне неправильно.Я предполагаю, что что-то упустил с 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;

К сожалению, это не сработало.Любая помощь будет оценена.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...