除了 这个 问题 之外 , 我 还 尝试 将 一 个 状态 Map 到 另 一 个 状态 , 以 存储 amountToPay
对象 , 从而 得到 它 的 和 。 问题 是 每次 它 呈现 onChange
函数 时 。 它 都 将 每个 状态 存储 为 对象 , 如 您 所 见 :
的 最 大 值 。
我 只 想 得到 [ 434
] , 而 不是 ['','4','43','434']
, 这样 我 就 可以 , 缩减 数组 , 得到 和 。
将 数组 对象 存储 到 另 一 个 状态 的 方法 如下
const [amountToPay, setAmountToPay] = useState("")
console.log("AMOUNT TO PAY", amountToPay)
useEffect(() => {
serviceItem.map((item) => (
setAmountToPay([...amountToPay, item.amountToPay])
))
}, [serviceItem])
useEffect(() => {
serviceItem.map((item) => (
setAmountToPay([...amountToPay, item.amountToPay])
))
}, [serviceItem])
中 的 每 一 个
您 可以 在 这里 查看 整个 代码 CodeSandbox code 。 如 有 任何 帮助 , 我们 将 不胜 感激 : )
3条答案
按热度按时间dm7nw8vv1#
我建议你做几件事:
1.在
serviceItem
中添加一些id属性。1.删除
const [amountToPay, setAmountToPay] = useState([]);
1.直接使用来自
serviceItem
集合值为此,您需要创建onChange处理程序,如下所示并且支付金额可以很容易的从
serviceItem
集合中得到,没有效果或者其他状态6yjfywim2#
发生这种情况是因为您在onChange方法上设置了serviceItem,并使用传递serviceItem作为deps数组,以使用您在其中设置amountToPay效果因此,每次更改时,它都会追加到数组中
不要在 useEffect 中设置金额,而是创建一个方法并调用remove/add按钮,这样它只会在用户完成键入后调用。您还可以放置一个按钮“保存”或“calculate Amount”并调用handleSetAmountToPAY方法,该方法将更新金额。
kse8i1jr3#
我用了错误的方法,我通过MapserviceItem,然后使用
reduce
来得到和,而不是把它再次放入一个单独的对象数组,然后再Map一次来得到和。感谢所有的帮助和建议!