[英]React-Native render a page on push notification
我的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);
您可以輕松地將用戶導航到任何視圖/組件,也可以將通知數據發送到該視圖。
對於本機反應,我建議您使用Ex-Navigation,您可以將其同時使用(反應本機和指數),並且它確實不錯,而且是東方的。
您要做的就是添加一個全局范圍變量來跟蹤導航器,以便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)} />
)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.