Javascript 为什么这会产生“错误”;“未定义”;当我告诉它如果不生成消息则生成消息时';不存在?
为什么在我按下按钮(没有要搜索的字符串)或多次按下按钮调用函数时会发生此错误 我理解它,因为如果某些参数未定义,它会向控制台生成一个错误,如果它工作,则会显示所有内容Javascript 为什么这会产生“错误”;“未定义”;当我告诉它如果不生成消息则生成消息时';不存在?,javascript,reactjs,Javascript,Reactjs,为什么在我按下按钮(没有要搜索的字符串)或多次按下按钮调用函数时会发生此错误 我理解它,因为如果某些参数未定义,它会向控制台生成一个错误,如果它工作,则会显示所有内容 const searchPokemon = () => { api.get(`pokemon/${search}`.toLowerCase()).then((response) => { response == undefined ? console.log("Error
const searchPokemon = () => {
api.get(`pokemon/${search}`.toLowerCase()).then((response) => {
response == undefined
? console.log("Error")
: setPokemon({
name: response.data.name,
height: response.data.height,
weight: response.data.weight,
img: response.data.sprites.front_default,
id: response.data.id,
type: response.data.types[0].type.name,
type2: response.data.types[1]?.type.name,
});
我怎样才能绕过这个问题来解决它,为什么它的反应不符合我的想法呢?您只能检查反应是否未定义。但事实上,问题在于,response.data.sprites是未定义的。因此,您应该检查您访问设置口袋妖怪的每个嵌套字段是否未定义。您可以更改它
const searchPokemon=()=>{
get(`pokemon/${search}`.toLowerCase())。然后((响应)=>{
响应==未定义的控制台.log(“错误”):setPokemon({
名称:response.data.name,
高度:response.data.height,
权重:response.data.weight,
img:response.data.sprites?.front\u默认值,
id:response.data.id,
类型:response.data.types[0].type.name,
type2:response.data.types[1]?.type.name
});
});
}
问题是您试图访问未定义的上的前端\u default
。这意味着response.data.sprites
是未定义的
,但您没有检查它。您只检查响应
是否为未定义
。您没有检查response.data.sprites
。显然response.data.sprites
在API调用中返回为undefined
。有了这些小信息,我们无法解释为什么。嘿,迪米特里,谢谢你的回复。如何在setState中检查它,我已经尝试过这个“setPokemon({name:response.data.name,height:response.data.height,weight:response.data.weight,img:response.data.sprites?.front_default,:console.log('error;')),id:response.data.id,type:response.data.types[0].type.name,type2:response.data.types[1]?.type.name,});“但它似乎不起作用。Faith已经回答过了,我怎么能检查每个回复呢。如果精灵未定义,您可以使用可选链接并提供一些默认图像(无图像默认值):setPokemon{…img:response.data.sprites?.front\u default??无图像默认值}