我已将路由器配置为:
const SwitchRouter = createSwitchNavigator(
{
Splash: {
screen: Launch,
path: 'hello/:code',
},
App: HomeStack,
},
{
initialRouteName: 'Splash',
}
);
我正在使用Safari中的链接,该链接启动了我的iOS应用,然后我应该从代码中的此链接获取参数。
我对链接尝试了不同,但无法从链接中获取任何参数。这是我尝试过的:
myApp://hello/123
myApp://hello/?code=123
myApp://hello?code=123
应该在以下“启动”屏幕中找到应该获得此code
结盟者的代码:
const code = navigation.getParam('code', 'error');
代码值始终是错误,在这里我的参数从未找到。 我在这里想念什么吗?我遍历了所有GitHub和react-navigation的文档,但找不到适合我的解决方案。
我读到有些人在componentDidMount中获取深层链接参数时遇到一些问题。显然它们不可用。 因此,我这里负责获取参数“代码”的代码试图在componentDidMount / DidUpdate中甚至在渲染器中使用,但在所有情况下我都无法获取参数。
答案 0 :(得分:1)
我认为您不能将Deeplink参数传递给第一个/初始屏幕。 您必须改为使用代理服务器:
const SwitchRouter = createSwitchNavigator(
{
CodeScreen: {
Screen: Code,
path: 'code/:code',
}
Splash: {
screen: Launch,
path: 'hello',
},
App: HomeStack,
},
{
initialRouteName: 'Splash',
}
});
class Code extends Component {
constructor(props) {
super(props);
const {navigation} = this.props;
const code = navigation.getParam('code', false);
navigation.navigate('hello', {code});
}
render() {
return (
<View>
</View>
);
}
}
现在,您可以在SplashScreen中检索“代码”参数。