【问题标题】:Expo Linking not redirect to specific path when app is not opening当应用程序未打开时,Expo Linking 不会重定向到特定路径
【发布时间】:2020-12-13 15:55:15
【问题描述】:

简单来说,我有三个容器,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>
    );
}

主页.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 可以重定向到详细信息页面。但是,问题是如果应用程序没有在后台运行,上面的链接只能重定向到主页。请给点建议,谢谢。

【问题讨论】:

    标签: javascript react-native expo react-navigation deep-linking


    【解决方案1】:

    最后,我通过在 Homepage.js 的构造函数中添加一行代码来解决这个问题

    this.urlRedirect = this.urlRedirect.bind(this);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 2017-12-24
      • 2015-11-27
      • 1970-01-01
      • 2023-01-16
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多