[英]How to add object to an array inside another array of objects?
在 reactJS。我创建了一个 Class Client
。 在这个 Class 中,我有一个名为PurchaseList
的数组。 我尝试向该数组添加一个名为purchase
的 object 数组。 但出于某种原因,我得到了Uncaught TypeError: clientList[currentClientIdx].purchaseList.push is not a function
(我必须指定clientList
是 App.js 组件中定义的 state )
我怎样才能做到这一点?
这是我的代码:
//this is the Class:
class Client {
purchaseList = [];
constructor(id, username, password, moneyAmount) {
this.id = id;
this.username = username;
this.password = password;
this.moneyAmount = moneyAmount;
}
}
这是将数据添加到PurchaseList
的代码:
import React, { useState } from 'react'
export default function Action({clientList,currentClientIdx}) {
const [company,setCompany]=useState()
const [amount,setAmount]=useState()
const [purchase,setPurchase]=useState()
const handlePurchase=()=>{
setPurchase({company:company,amount:amount})
console.log(purchase);
clientList[currentClientIdx].purchaseList.push(purchase)
console.log(clientList[currentClientIdx]);
}
return (
<div>
<input type="text" placeholder='Company' onChange={(e)=>setCompany(e.target.value)}/>
<input type="number" placeholder='Amount' onChange={(e)=>setAmount(e.target.value)} />
<button onClick={()=>handlePurchase()}>Purchase</button>
</div>
)
}
确保purchaseList
是一个数组。
在调用push
之前,您必须将purchaseList
初始化为一个空数组。 此外,您应该检查它是否已经是一个数组,这样您就不会覆盖值:
if (Array.isArray(clientList[currentClientIdx].purchaseList)) {
// Array already exists, push to end of array
clientList[currentClientIdx].purchaseList.push(purchase);
} else {
// Array does not exist, create array and push element
clientList[currentClientIdx].purchaseList = [];
clientList[currentClientIdx].purchaseList.push(purchase);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.