我使用链接从浏览器打开我的应用程序。
当我点击第一个浏览器的链接时,我的应用程序开始运行,但是输入的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/