反应本性在推送通知时渲染页面



我的index.ios.js响应推送通知。如果手机打开,我希望这将用户发送到其他页面。我不确定该怎么做。我正在使用Onesignals进行推动。

import React, { Component } from 'react';
import { ... } from 'react-native';
export default class Example extends Component {
    componentWillMount() {
      OneSignal.addEventListener('received', this.onReceived);
    }
    onReceived(notification) {
        // triggers on push
    }
    renderScene(route, navigator){ 
      return <route.component navigator={navigator} />
    }
    render() {
        return (
            <Navigator initialRoute={{component: Login}} 
            renderScene={this.renderScene.bind(this)} />
        )
    }   
}
AppRegistry.registerComponent('Example', () => Example);

我尝试的

我尝试更改状态,然后重新启用整个应用程序,该应用程序暂时工作,但将您锁定在该页面中,因为状态无法更新。

forceRerender(route, navigator){
  return <BarberShow navigator={navigator}  />
}
render() {
  if(this.state.notification){
    return <Navigator initialRoute={{component: AppointmentShow}} renderScene={this.forceRerender.bind(this)}/>
  }else{
    return <Navigator initialRoute={{component: Login}} renderScene={this.renderScene.bind(this)} />
  }
}

您在哪里更改了代码中的状态?

我还建议您使用" React-Native-Router-Flux",这是管理导航的绝佳模块。

以防万一:

import React, { Component } from 'react';
import { ... } from 'react-native';
import Actions from 'react-native-router-flux';
export default class Example extends Component {
    componentWillMount() {
      OneSignal.addEventListener('received', this.onReceived);
    }
    onReceived(notification) {
        // triggers on push
        Actions.customView({notification})
    }
    renderScene(route, navigator){ 
      return <route.component navigator={navigator} />
    }
    render() {
        return (
            <Navigator initialRoute={{component: Login}} 
            renderScene={this.renderScene.bind(this)} />
        )
    }   
}
AppRegistry.registerComponent('Example', () => Example);

您可以轻松地将用户导航到任何视图/组件,并将通知数据也发送到该视图。

用于React Native我建议您使用EX-NAVIGATIO

解决方案

您要做的就是添加一个全局范围变量以跟踪导航器,以便index.ios.js可以访问它。

var _navigator;
export default class Example extends Component {
    componentWillMount() {
      OneSignal.addEventListener('received', this.onReceived);
    }
    onReceived(notification) {
        _navigator.push({
          component: NewPageHere
        });
    }
    renderScene(route, navigator){ 
      _navigator = navigator;
      return <route.component navigator={navigator} />
    }
    render() {
        return (
            <Navigator initialRoute={{component: Login}} 
            renderScene={this.renderScene.bind(this)} />
        )
    }   
}

相关内容

  • 没有找到相关文章

最新更新