亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 onClick 方法刪除對象并更新數組

如何使用 onClick 方法刪除對象并更新數組

莫回無 2023-06-09 10:59:57
我正在從 skidList 數組創建列表并處理每個 skid 上的復制和刪除操作以及單擊刪除按鈕我調用的deleteSkid方法刪除該索引處的 skid 并更新列表。但是,它不是刪除特定索引處的 skid,而是刪除數組列表中的最后一個 skid。const CreateNewTab = () => {  const [skidList, setSkidList] = useState([]);  const [productNameMap, setproductNameMap] = useState({});  useEffect(() => {    let skidList = [];    let newSkid = {};    newSkid["2"] = "0";    newSkid["3"] = "0";    newSkid["4"] = "0";    skidList.push(newSkid);    setSkidList([...skidList]);    let productNameMap = {};    productNameMap["2"] = "PEN";    productNameMap["3"] = "PENCIL";    productNameMap["4"] = "ERASER";    setproductNameMap({ ...productNameMap });  }, []);  const updateProductQuantity = (skid, key, newQuantity, index) => {    console.log("Inside update Skid Quantity Index= " + index);    skid[key] = newQuantity;    let newSkidList = skidList;    newSkidList.splice(index, 1, skid);    console.log(newSkidList);    setSkidList([...newSkidList]);  };  const deleteSkid = (index) => {    console.log(index);    let newSkidList = skidList;    newSkidList.splice(index, 1);    console.log("Skid deleted from: " + newSkidList);    setSkidList([...newSkidList]);  };  const insertSkid = (skid) => {    setSkidList(skidList.concat([{ ...skid }]));  };  return (    <div>      {skidList.flatMap((skid, index) => (        <div style={{ marginRight: "0", paddingRight: "0" }}>          <Row style={{ margin: "0", padding: "0" }}>            <Col span={19}>              {Object.keys(skid).map((key) => (                <Row>                  <Col span={16}>                    <h6>{productNameMap[key.toString()]}</h6>                  </Col>                  <Col span={8}>                    <InputNumber                      min={0}                      defaultValue={skid[key]}
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

似乎它與 react 如何回收 dom 或其他東西有關,該項目確實從數組中刪除但不知何故該值保留在 dom 中,因為您在輸入中使用而不是,進行這個小改動defaultValuevalue會工作

value={skid[key]}

查看完整回答
反對 回復 2023-06-09
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您的實現deleteSkid()很好,但是您將值傳遞給 asInputNumber所以defaultValue當組件重新渲染時它不會改變。只需將其替換為value,它就可以工作。


<InputNumber

  min={0}

  value={skid[key]}

  rules={[

    {

      required: true,

      message: "Please input quantity!"

    }

  ]}

  onChange={(newQuantity) => {

    updateProductQuantity(skid, key, newQuantity, index);

  }}

/>


查看完整回答
反對 回復 2023-06-09
  • 2 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號