Использование React-native-уведомлений в React-навигации - PullRequest
0 голосов
/ 10 мая 2018

У меня есть приложение со следующей структурой:

AuthNavi: {
  login1: login1,
  login2: login2
}

TabNavi: {
  tab1: TabNavi1
  tab2: TabNavi2,
  ...
}

AppSwitchNavi: {
  AuthLoading: LoadingScreen, (initial screen)
  Auth: AuthNavi,
  Content: TabNavi
}

Приложение запустилось с AppSwitchNavi, если приложение не вошло в систему, оно перейдет в AuthNavi, в противном случае перейдите в TabNavi.

Я хотел бы добавить запрос разрешения уведомления после входа в систему, и обработка уведомления также может быть добавлена ​​после входа в систему.

Кто-нибудь знает, как реализовать уведомление в этой ситуации, которая работает только в TabNavi?

1 Ответ

0 голосов
/ 10 мая 2018

Это простая реализация на основе компонентов для компонентов.

import { EventEmitter } from 'events';

const appEvents = new EventEmitter();

appEvents.setMaxListeners(0);

export default class AppEvents {
    static removeEvent(subscribe) {
        subscribe.remove();
    }

    static registerLoginEvent(method) {
        return appEvents.addListener('Login-Required-Event', method);
    }

    static emitLoginEvent(data) {
        appEvents.emit('Login-Required-Event', data);
    }

    static removeLoginEvent(method) {
        appEvents.removeListener('Login-Required-Event', method);
    }
}

реализация:

import React from 'react';
import AppEvents from './AppEvents';
import AppSwitchNavi from './Navigations';

export default class AppSwitchNaviWrapper extends React.Component {
    componentDidMount() {
        AppEvents.registerLoginEvent(this.loginEvent);
    }

    componentWillUnmount() {
        AppEvents.removeLoginEvent(this.loginEvent);
    }

    loginEvent = () => {
        // do something
    };

    render() {
        return <AppSwitchNavi />;
    }

}

Излучить событие из некоторой ситуации как AppEvents.emitLoginEvent(UserData);

Но, по-моему, для таких ситуаций вы должны обрабатывать избыточность, Redux поможет вам в долгосрочной перспективе. Реализация, основанная на событиях, создает вам проблемы, и вы должны быть очень осторожны с реализацией и удалением события, чтобы предотвратить утечки памяти и непредвиденное поведение приложения.

...