React-Native组件中的单例行为

时间:2019-07-18 16:48:03

标签: reactjs react-native react-native-android

我正在使用rnfirebase

将FCM集成到我的 React Native 项目中

App.js

  • 项目的入口点。
  • 包含反应导航AppContainer

render(){

        return (
            <React.Fragment>
                <AppContainer />
                <PushNotification />
            </React.Fragment>
        )
 }

PushNotification.js

  • 包含接收通知并将其委托给的所有逻辑 已注册回调的各个组件。

_processActionUpdate(data){

        if (this.props.notifyUpdate) { // some component is listening to notification data.
            let productId = data.productId;
            let productStatus = data.productStatus;
            this.props.notifyUpdate(productId, productStatus);
        } else { // open component to show information using navigation props

        }
    }

ComponentA.js

render() {

        return (
            <View>
                <PushNotification
                    notifyUpdate={this._notificationProductUpdate} />

            // Other views

            </View>
        )
    }

ComponentB.js

render() {

        return (
            <View>
                <PushNotification
                    notifyUpdate={this._notificationProductUpdate} />

            // Other views

            </View>
        )
    }

立即添加组件堆栈

App.js > ComponentA > ComponentB (顶部)

现在当我在 ComponentB 中并且推送通知到来时 我可以看到 _processActionUpdate 触发三次

  • 首先使用 App.js (道具没有notifyUpdate)
  • ComponentA.js 的第二个(道具具有组件A的notifyUpdate)
  • ComponentB.js 的第三项(道具具有组件B的notifyUpdate)

必需的行为?

我想在应用启动时注册用于推送通知的侦听器,这就是为什么在App.js中添加侦听器,并且只想触发顶部的组件的 notifyUpdate

有没有一种方法可以诱发单人行为或其他任何方式来实现这种行为。

0 个答案:

没有答案