如果路径名不符合我明确定义的路由,有没有办法导航到默认界面(Profile)?

问题描述 投票:0回答:1

我试着为我的react native app写了config对象,并按照 react-navigation 配置链接 docs.

我定义了一系列路径--> 路径映射,包括Chat:'feed'和Explore:'news'。

我的目标是让应用在解析时默认为Profile界面。https:/example.comsomeusername。 并传递'someusername'作为id param。类似于 https:/instagram.comapple 直接映射到@苹果的账号的资料界面。

const linking = {
  prefixes: ['https://example.com', 'example://'],
  config: {
    Home: {
      path: '',
      screens: {
        Chat: 'feed',
        Explore: 'news',
        Profile: ':id',
      },
    },
  },
}

为了避免冲突,我不允许用户做账号@feed、@news等。如果'someusername'还不存在,我也会显示 "用户未找到 "的消息。

有没有一种正确的方法来做这个config对象?或者我需要写自定义的getStateFromPath getPathFromState函数,有谁有例子吗?

android ios react-native react-navigation deep-linking
1个回答
0
投票

我们现在还没有内置的方法来实现,但你可以提供一个自定义的 getStateFromPath 函数来返回一个不同的状态对象。

const linking = {
  prefixes: ['https://mychat.com', 'mychat://'],
  config: {
    Chat: 'feed/:sort',
  },
  getStateFromPath(path, config) {
    // You can perform own checks on the path
    if (isValidPath(path)) {
      return {
        routes: [
          {
            name: 'Home',
            state: {
              routes: [{ name: 'Profile' }],
            },
          },
        ],
      };
    }

    return getStateFromPath(path, config);
  },
};

https:/reactnavigation.orgdocsuse-linking#getstatefrompath。

关于用户未找到的消息,我建议在 Profile 通过检查params并在屏幕上显示错误信息。

© www.soinside.com 2019 - 2024. All rights reserved.