3 回答

TA貢獻1802條經驗 獲得超10個贊
正如所討論的,您可以創建一個方法并添加到現有數組中并設置組件狀態。
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貢獻1821條經驗 獲得超6個贊
添加值后使用Array.push不會創建新數組。您可以在瀏覽器控制臺中對此進行測試:
let arr = []
let arrCopy = arr
arr.push(1) // [1]
arr === arrCopy // true
arr = [...arr, 2] // [1, 2]
arr === arrCopy // false
由于 React===在內部使用比較狀態并決定重新渲染,如果您使用 arr.push({ name: "item 3", amount: 1 }),UI 將不會更新。相反,您需要每次按下按鈕(處理 onClick 事件)時創建一個新數組,復制舊值并添加新值。

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