我有一个触发axios.post
到API端点的按钮。该按钮在首次使用时起作用(console.log(res.data.userdata[0].txHash)
成功)。
如果我更改状态(this.state.hashOutput
)并再次按下按钮,则会发生Uncaught (in promise) TypeError: Cannot read property 'txHash' of undefined
的错误。服务器上没有错误。
代码:
handleOnClick() {
const searchValue = this.state.hashOutput;
axios.post("https://myapi.net/searchDB", {
searchValue: searchValue
})
.then(res => {
console.log(res.data);
}).catch(err => console.log(err));
}
}
有什么想法吗?我不知道从哪里开始研究。谢谢!
答案 0 :(得分:1)
您确定响应中包含数据数组还是单个对象? 无论如何,建议您在访问类似值之前先进行检查。
handleOnClick() {
const searchValue = this.state.hashOutput;
axios.post("https://myapi.net/searchDB", {
searchValue: searchValue
})
.then(res => {
console.log(res.data.userdata && res.data.userdata[0] && res.data.userdata[0].txHash); // make sure the value is available before accessing the property
});
}
}
每个帖子都是独立的,您不必像帖子中提到的那样reset
。尝试先记录res
。
答案 1 :(得分:1)
txHash
是程序中描述的res.data.userdata[x]
的属性,错误明确指出Cannot read property 'txHash' of undefined
,ergo,res.data.userdata[x]
是未定义的,这意味着收到的搜索结果来自服务器的数据不包含任何数据,这又意味着您的搜索参数与数据库中的任何值都不匹配,因此是“找不到搜索结果”的情况,并且不应在后端引起任何错误情况就是如此。您应该在前端检查一下并妥善处理。
以这种方式记录结果并亲自检查结果:
console.log("Data: ", res.data);
答案 2 :(得分:0)
我不确定,但是看看您是否在构造函数中绑定了handleOnClick函数。有时这可能会带来不确定的错误。
this.handleOnClick=this.handleOnClick.bind(this);
请检查。
谢谢