javascript - 反应,我怎样才能接近标签的价值?
问题描述
import React, { useState, useEffect } from "react";
import { addCart, getInventory } from "../../Service/Service";
function InventroyDry85(props) {
const [inventory, setInventory] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [toggle, setToggle] = useState(true);
useEffect(() => {
refreshPage();
}, []);
useEffect(() => {
inventory.forEach((item)=>{
if(item.Quantity === 0){
setToggle(false)
}
})
}, [inventory]);
function refreshPage() {
setLoading(true);
getInventory()
.then((json) => {
setInventory(json);
setLoading(false);
})
.catch((err) => {
console.error(err);
setError(err);
});
}
if (loading)
return (
<div className="alert alert-info">
Please stand by while we connect your call....
</div>
);
if (error)
return (
<div className="alert alert-danger">There was an error loading...</div>
);
async function addCartButton(e) {
await addCart(e.target.value);
reloadPage();
}
function reloadPage() {
window.location.reload(false);
}
return (
<div className="col">
<table className="table">
<thead>
<tr>
<th>SKU</th>
<th>Name</th>
<th>Quantity</th>
<th>Price</th>
<th>Add</th>
</tr>
</thead>
<tbody>
{inventory.map((item) => (
<tr>
<td>{item.SKU}</td>
<td>{item.Name}</td>
<td>{item.Quantity}</td>
<td>{item.Price}</td>
<td>
{toggle ? (
<button
className="alert-primary alert"
value={item.SKU}
onClick={addCartButton}
>
Add
</button>
) : (
<button className="alert">Out of Stock</button>
)}
</td>
</tr>
))}
</tbody>
</table>
</div>
);
}
export default InventroyDry85;
这是我的代码。库存状态有一个 JSON 文件数组,例如
{"SKU":"59779-642","Name":"Napkin - Beverage 1 Ply","Price":37.99,"Quantity":1}
toggle 是一种状态(默认为 true,显示添加按钮)当 toggle 为 false 时,按钮应更改为 Out of Stock
库存状态从节点服务器获取价值,因此它不断变化。
问题
当库存的数量等于0时,我尝试制作一个功能,切换状态更改为false以更改按钮。
所以我尝试像这样使用 useEffect ...
useEffect(() => {
inventory.forEach((item)=>{
if(item.Quantity === 0){
setToggle(false)
}
})
}, [inventory]);
但它只是将切换状态更改为 false 并使所有按钮缺货,甚至库存。数量还不是0...
我怎样才能解决这个问题?
解决方案
推荐阅读
- java - 使用 SmallRye 反应式消息动态发布/订阅 MQTT
- c# - 设计asp.net core web api来添加子类/专用对象
- javascript - VueJs Laravel 分页
- javascript - javascript 一次捕获多个错误
- liquibase - 执行 DBMS_AQADM 变更集失败 - 原因:liquibase.exception.DatabaseException:ORA-00900:无效的 SQL 语句
- python - NoSuchElementException:消息:没有这样的元素:使用 Selenium 和 Python 抓取前 20 名持有者时无法定位元素错误
- html - 如何仅在屏幕较小时向右浮动,而在屏幕较大时向左浮动?
- amazon-web-services - 带语音搜索的弹性搜索
- python - 如何替换包含完整句子的列的每一行中的多个单词?
- laravel - Nuxt 与 Axios POST 到 Laravel 的 API