【发布时间】:2021-10-22 16:27:39
【问题描述】:
我正在使用 React Navigation 6 设置 URI 方案深度链接,这是我的配置方式:
const linking = {
prefixes: ["wagal://"],
config: {
ResetPassword: {
path: "reset/password/:token",
params: {
token: null,
},
},
},
};
function homeStack() {
return (
<NavigationContainer linking={linking} fallback={<Text>Loading...</Text>}>
<Stack.Navigator>
<Stack.Screen component={ResetPassword} name="ResetPassword" />
//...
</Stack.Navigator>
</NavigationContainer>
);
}
如果我转到wagal://reset/password?token=123456789,它会将我重定向到重置密码屏幕中的应用程序,但我无法从ResetPassword 获取令牌参数:
function ResetPassword({ route }) {
const {token} = route.params;
// ...
}
它抛出以下错误:
undefined is not an object (evaluating route.params.token)
但如果我尝试使用以下代码在 PasswordReset 屏幕中获取整个 URL,它会显示带有令牌的整个 URI:
useEffect(() => {
Linking.getInitialURL().then((url) => {
console.log(`url`, url);
});
}, []);
输出:
wagal://reset/password?token=123456789
我可以使用slice、substring 方法,但必须有办法通过某些方法获取参数?
我也试过这个navigation.getParam("token");,但我得到以下错误:
navigation.getParam is not a function.
有人可以帮忙吗?提前致谢。
【问题讨论】:
-
嗯,这很奇怪。你在关注这个教程吗reactnavigation.org/docs/configuring-links/#passing-params
-
我按照这个教程,还是不行
标签: reactjs react-native react-navigation deep-linking url-scheme