我使用链接从浏览器打开我的应用程序。
当我在浏览器中点击第一个链接时,我的应用会运行,但在此之后传入的网址不会清除,而linking.GetInitialUrl()
始终使用该网址运行。
我的架构为myapp://host
,网址中的我的网址为myapp://host/ok
我点击我的网址并linking.getInitialUrl()
有效,但下次我回到我的屏幕时,我inking.getInitialUrl()
会在没有打开网页的情况下返回我的网址。
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);
}
先谢谢!
答案 0 :(得分:2)
因为您在getInitialURL
方法中调用componentDidMount
方法,而没有检查应用程序是否已加载。每当重新加载该组件时,您的alert(url)
都会被触发。
要解决此问题,您必须在根组件中调用getInitialURL
,该根组件将在应用加载后再也不会加载。或者您可以使用全局变量来标记应用的状态(是否为是否已加载。
if(!InMemoryData.appLoaded){
Linking.getInitialURL().then(url => {
this._navigate(url);
InMemoryData.appLoaded = true;
});
}