首先,我在输入框中输入nick的昵称。其次,通过Linking.openURL('http://10.0.2.2:3065/auth/kakao')获取url数据。第三,当执行Linking.addEventListener时,我希望将我输入的nick记录在console.log中(“nick:”,)。
但是当我运行我的代码时,它写道: nick: undifned。
我如何修复我的代码?
这是我的代码
const Kakao = () => {
const [nick, onChangeNick] = useInput('');
useEffect(() => {
Linking.addEventListener('url', async ({url, nick}) => {
console.log('nick::', nick); //third
});
return () => Linking.removeEventListener('url');
}, []);
return (
<Container>
<Inputs placeholder="닉네임" value={nick} onChange={onChangeNick} /> //first
<LoginButton
onPress={() => Linking.openURL('http://10.0.2.2:3065/auth/kakao')}> //second
<Label>카카오 로그인 링크</Label>
</LoginButton>
</Container>
);
};
export default Kakao;发布于 2021-04-26 18:04:45
首先,我不知道
Linking到底是什么,它是一个外部库还是什么(也许分享一些上下文可能会有所帮助)。
其次,您试图在Linking的回调函数中访问useEffect上的nick,并将其作为参数的非结构化对象。检查这一点。
编辑:我刚刚读了有关Linking的文档(https://reactnative.dev/docs/linking#handling-deep-links)
您只是在addEventListener的回调中没有名为nick的参数。只需从中删除它,它就会从状态中获取nick,因为它在全局范围内。
const [nick, onChangeNick] = useInput('');
useEffect(() => {
// Remove `nick`
Linking.addEventListener('url', async ({url}) => {
console.log('nick::', nick); //third
});
return () => Linking.removeEventListener('url');
}, []);https://stackoverflow.com/questions/67264274
复制相似问题