我使用链接从浏览器打开我的应用程序。

当我点击第一个浏览器的链接时,我的应用程序开始运行,但是输入的URL在此之后不会清除,并且linking.GetInitialUrl()始终使用该URL运行。

我的架构为myapp://host,而我在网络上的网址为myapp://host/ok
我单击我的URL,然后linking.getInitialUrl()起作用,但是下次我回到屏幕时,inking.getInitialUrl()返回我的Web URL,而没有打开我的网页。

componentDidMount() {
        Linking.getInitialURL().then(url => {
           if (url) {
              alert(url)
           }
         })
         .catch(err => {
           console.error(err);
         });
           Linking.addEventListener('url',this.handleOpenURL);
    }


     componentWillUnmount() {           Linking.removeEventListener('url',this.handleOpenURL);
    }

    handleOpenURL = (event) => { // D
        this.linkFunc(event.url);
      }

最佳答案

由于您是在getInitialURL方法中调用componentDidMount方法,而不检查应用程序是否已加载。每当再次加载该组件时,您的alert(url)都会被触发。

要解决该问题,您必须在根组件中调用getInitialURL,该根组件在应用加载后将永远不会再次加载。或者您可以使用全局变量来标记应用的状态(无论是否已加载)。

if(!InMemoryData.appLoaded){
    Linking.getInitialURL().then(url => {
    this._navigate(url);
    InMemoryData.appLoaded = true;
    });
}

关于javascript - 即使我不从外部链接调用,React-native链接getinitialurl()仍然有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50540810/

10-10 00:25