我试着为我的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函数,有谁有例子吗?
我们现在还没有内置的方法来实现,但你可以提供一个自定义的 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并在屏幕上显示错误信息。