2017-06-21 29 views
1

IはonReceived(通知){}、onOpened(OpenResultに){} Onesignalイベント内部使用時/ this.setState()関数エラーないthis.handleNotification()を取得してい私が作成しました。以下は私のコードです。 この問題の解決方法私は正しく実装されているかどうか?位反応ネイティブ - Onesignal実装

componentWillMount() {  
    OneSignal.addEventListener('received', this.onReceived); 
    OneSignal.addEventListener('opened', this.onOpened); 
} 
componentWillUnmount() { 
    OneSignal.removeEventListener('received', this.onReceived); 
    OneSignal.removeEventListener('opened', this.onOpened); 
} 

onOpened(openResult) { 
    try {  
     this.setState({ msgBody: openResult.notification.payload.body }); 
    } catch (error) { } 
    } 
    onReceived(notification) { 
    OBJ.homeData.setNewMsgCount();  
    this.handleNotification('', '', '');  
    } 

答えて

1

あなたは以下のコードのようにコンテキストをバインドする必要があります。これで

OneSignal.addEventListener('received', this.onReceived.bind(this)); 
+1

慎重に - 'bind'は、新しい関数を作成して返します。 'removeEventListener'に同じ参照を渡せるように、' addEventListener'に渡した関数参照を保持する必要があります。 'this.onReceived = this.onReceived.bind(this)' Then: 'OneSignal.addEventListener( 'received'、this.onReceived);' –

関連する問題