3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個贊
正如所討論的,您可以創(chuàng)建一個方法并添加到現(xiàn)有數(shù)組中并設(shè)置組件狀態(tài)。
class SomeComponent {
constructor(){
this.state.products =[]
}
onAddProduct(item) {
this.setState({
products: this.state.products.concat({name: item, quantity: 1})
})
}
onAddProductByName(name) {
this.setState({
products: this.state.products.map(item => {
if(item.name === name) item.quantity +=1
return item
})
})
}
}

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個贊
添加值后使用Array.push不會創(chuàng)建新數(shù)組。您可以在瀏覽器控制臺中對此進(jìn)行測試:
let arr = []
let arrCopy = arr
arr.push(1) // [1]
arr === arrCopy // true
arr = [...arr, 2] // [1, 2]
arr === arrCopy // false
由于 React===在內(nèi)部使用比較狀態(tài)并決定重新渲染,如果您使用 arr.push({ name: "item 3", amount: 1 }),UI 將不會更新。相反,您需要每次按下按鈕(處理 onClick 事件)時創(chuàng)建一個新數(shù)組,復(fù)制舊值并添加新值。

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個贊
嘗試這個:
let counter = 1
let items = []
function setNewItem() {
items.push({name: `item ${counter}`, quantity: 1})
counter++
}
- 3 回答
- 0 關(guān)注
- 162 瀏覽
添加回答
舉報