我的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)} />
)
}
}