API返回error.message为undefined致程序崩溃的解决办法
问题解决:登录成功时因data.error为undefined导致程序崩溃
你当前的代码逻辑存在顺序错误:当登录成功时data.error本身就是undefined,直接访问data.error.message会触发报错——因为undefined没有message属性,此时后面的判断条件根本没机会执行。
正确的做法是先确认data.error存在,再去读取它的message属性,两种可行写法:
写法一:先判断data.error是否存在
if (data.error && data.error.message === 'EMAIL_NOT_FOUND') { setError({ title: "EMAIL_NOT_FOUND", message: "This email address is not registered.", }); setIsLoading(false); return; }
写法二:使用可选链操作符(ES2020+支持)
if (data.error?.message === 'EMAIL_NOT_FOUND') { setError({ title: "EMAIL_NOT_FOUND", message: "This email address is not registered.", }); setIsLoading(false); return; }
第一种写法通过data.error的存在性判断,避免了在data.error为undefined时访问属性;第二种用可选链?.会自动处理data.error为undefined的情况,直接返回undefined,不会触发报错,代码更简洁。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

