javascript - React 组件的循环内部函数
问题描述
(React web app开发)为了检查产品当前的库存状态,我使用产品ID循环json数据。我正在尝试通过键(id)从json(如下)中检索“DATAPAYLOAD”的值。idsent 是从另一个组件传递的字符串。但是“if (Data.response[i].id === idsent)”这个条件似乎总是错误的,因为我在控制台中“失败”了。如果有人可以查看以下代码并给我一些建议,那将非常有帮助,在此先感谢!
onButtonClicked = () => {
const idsent="D56F36C6038DFC8244F"
for (var i = 0; i < Data.response.length; i++) {
if (Data.response[i].id === idsent) {
name = Data.response[i].DATAPAYLOAD;
const word = '<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>';
if (name.includes(word)) {
return true;
}
else {
return false;
}
}
console.log("failed");
}
以下是通过 fetch get-method 请求的部分 json 数据。
Data= {
"code": 200,
"response": [
{
"id": "CED62C6F96BD0E21655142F",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>OUTOFSTOCK</INSTOCKVALUE>\n</AVAILABILITY>"
},
{
"id": "D56F36C6038DFC8244F",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>LESSTHAN10</INSTOCKVALUE>\n</AVAILABILITY>"
},
{
"id": "4536C9E608B563A749",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>\n</AVAILABILITY>"
},
{
"id": "3A576872130625CABFADEE68",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>\n</AVAILABILITY>"
}
]
}
再次感谢你。
解决方案
您可能希望console.log("failed");
在for
循环之外,如下所示(以便它仅在处理完所有数据后执行):
onButtonClicked = () => {
const idsent="D56F36C6038DFC8244F"
for (var i = 0; i < Data.response.length; i++) {
if (Data.response[i].id === idsent) {
name = Data.response[i].DATAPAYLOAD;
const word = '<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>';
if (name.includes(word)) {
return true;
}
else {
return false;
}
}
}
console.log("failed");
推荐阅读
- javascript - TypeScript 接口:类型“B”上不存在属性“A”| 无效的'
- python - 使用 Flutter 或 Python 从用户设备访问文件
- azure-functions - 在 azure-functions-core-tools@3.0.3568 安装后脚本失败
- django - 对于跨不同应用程序具有多种用户类型的项目,在设置 conf 中指定的正确 AUTH_USER_MODEL 是什么?
- reactjs - 使用 IndexedDB 反应测试
- python - GET HTTP 405 方法不允许
- r - 如何在 ggplot 刻面标签中添加绘图符号和换行符
- javascript - Laravel Vue Inertia 动态分页安装错误
- php - 如何检查php中完成功能的百分比
- powershell - Powershell - 如果没有文件夹或没有超过 30 天的文件夹,则跳过