Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应本机:打开推送通知会打开应用程序,但不会导航到相关内容_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 反应本机:打开推送通知会打开应用程序,但不会导航到相关内容

Javascript 反应本机:打开推送通知会打开应用程序,但不会导航到相关内容,javascript,reactjs,react-native,Javascript,Reactjs,React Native,当前,在应用程序运行时打开推送通知时,它将导航到正确的内容场景。但是,当应用程序关闭,用户打开推送通知时,它将只打开应用程序,而不会导航到相关内容场景。我认为问题在于onNotification函数与checkLogin函数几乎同时启动。我想以某种方式等到checkLogin完成,然后继续运行onNotification。我感谢任何人的帮助 // When receiving an incoming notification (iOS/Android) onNotification: async

当前,在应用程序运行时打开推送通知时,它将导航到正确的内容场景。但是,当应用程序关闭,用户打开推送通知时,它将只打开应用程序,而不会导航到相关内容场景。我认为问题在于onNotification函数与checkLogin函数几乎同时启动。我想以某种方式等到checkLogin完成,然后继续运行onNotification。我感谢任何人的帮助

// When receiving an incoming notification (iOS/Android)
onNotification: async function (notification) {

//for iOS the data is nested, for Android the data is attached directly to the object
  let data = (Platform.OS === 'ios') ? notification.data : notification;
  let id = data._id;
  let channelId = data.channel;
  let message = data.message;

  Logger.info('Notification Received', message);

  if (isLoggedIn()) {
    // Check if the logged in user is the one who received the message
    let content = ModelCache.getContent(id);

    Navigation.goContent(content);
  }
}, 
应用程序启动时,此代码块位于索引文件中

componentWillMount() {
  this.checkLogin();
}

async checkLogin() {
  let user = await Data.getStoredUser();
  this.setState({
    isUserChecked: true,
    initialRoute: user ? Navigation.MAIN_SCENE : Navigation.LANDING_SCENE
  });
}

由于它是javascript,不太可能一件事与另一件事同时发生,因此这可能意味着在调用
checkLogin
函数之前调用
onNotification
。也许一种解决方法是从
onNotification
中设置状态值,该值可由
checkLogin

引用和操作。您能给我举一个如何从onNotification设置状态值的示例吗?您没有提到使用redux,所以如果您只是使用组件状态,我只需在顶级组件本身中定义onNotification,例如在componentDidMount中,然后从中访问
this.setState