Moh*_*Mas 5 javascript mobile-application reactjs react-native
我使用链接从浏览器打开我的应用程序。
当我点击浏览器中的第一个链接时,我的应用程序会运行,但之后传入的 URL 不会清除,并且linking.GetInitialUrl()始终使用该 URL 运行。
我的架构是myapp://host,我在网络上的 URL 是myapp://host/ok
我单击我的 URL 并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);
}Run Code Online (Sandbox Code Playgroud)
由于您getInitialURL在componentDidMount方法中调用方法而不检查应用程序是否已加载。alert(url)每当该组件再次加载时,您就会被触发。
要解决这个问题,你必须getInitialURL在应用加载后调用永远不会再次加载的根组件。或者你可以使用一个全局变量来标记你的应用的状态是否已经加载。
if(!InMemoryData.appLoaded){
Linking.getInitialURL().then(url => {
this._navigate(url);
InMemoryData.appLoaded = true;
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5109 次 |
| 最近记录: |