简单地说,我有三个容器,App.js,Homepage.js,Detail.js
App.js
let Home = createStackNavigator({
HomePage: { screen: HomePage },
Detail: { screen: DetailPage, path: 'detail' },
});
const RootPage = createAppContainer(createBottomTabNavigator({
Home: {
screen: Home
},
xxx: {...}
}));
export default class App extends React.Component {
render() {
return (
<Root>
<RootPage />
</Root>
);
}Homepage.js
import * as Linking from 'expo-linking';
export default class HomePage extends React.Component {
...
componentDidMount() {
Linking.getInitialURL().then(this.urlRedirect);
Linking.addEventListener('url', event => {
this.urlRedirect(event.url);
});
}
urlRedirect(url) {
if(!url) return;
let { path, queryParams } = Linking.parse(url);
console.log(`Linked to app with path: ${path} and data: ${JSON.stringify(queryParams)}`);
if (path != null)
this.props.navigation.navigate("Detail", {
item: {type: queryParams.type, data: {id: queryParams.id}}
})
}
...
}如果应用程序处于后台,则链接{perfix}/-/ detail ?type=A&id=1可以重定向到详细信息页。然而,问题是,如果应用程序没有在后台运行,上面的链接只能重定向到主页。请提供一些建议,谢谢。
发布于 2020-12-14 11:04:28
最后,我通过在Homepage.js中的构造函数中添加一行代码来解决这个问题。
this.urlRedirect = this.urlRedirect.bind(this);https://stackoverflow.com/questions/65277576
复制相似问题