const navigate = useNavigate();
const responseGoogle = (response) => {
localStorage.setItem('user', JSON.stringify(response.profileObj));
const { name, googleId, imageUrl } = response.profileObj;
const doc = {
_id: googleId,
_type: 'user',
userName: name,
image: imageUrl,
};
client.createIfNotExists(doc).then(() => {
navigate('/', { replace: true });
});
};
我得到一个错误“name is undefined”--但是怎么会这样呢?name
有什么问题吗?我已经处理这个问题很长时间了,但是我仍然不能弄清楚
4条答案
按热度按时间qnzebej01#
我遇到了同样的问题。我通过安装和一个额外的包解决了它:
我在我的代码中导入了它:
我还从react中导入了useEffect:
然后我定义了一个函数并包含了我的clientId。我的代码实现的片段如下所示:
希望对你有用!
wb1gzix02#
谷歌回应有3种回应类型。成功回应:
GoogleLoginResponse | GoogleLoginResponseOffline
,故障响应时:error
.profileObj
只存在于GoogleLoginResponse
类型上。因此,如果你有其他响应类型,profileObj
将是未定义的,并且你不能解构名称。你必须控制它。
pobjuy323#
小Pig倒车的o. c回答:
Google响应有3种响应类型:GoogleLoginResponse、GoogleLoginResponse脱机或错误。只有GoogleLoginResponse具有配置文件对象属性。
可能需要更改以下行:
到下面将有助于避免崩溃:
你仍然需要用其他方法来解决潜在的问题,但是空合并可以阻止崩溃。
ilmyapht4#
你必须等待来自响应的名称。我这样做了,它起作用了。