欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

react中涉及的增加,刪除list方式

 更新時間:2024年01月03日 09:47:39   作者:趙乘風_i  
這篇文章主要介紹了react中涉及的增加,刪除list方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

react涉及的增加,刪除list

做的項目中有一個功能是需要對多個Input組成的list可以新增和刪除。

剛開始想的解決是直接使用index來做,這個可以新增,但是做不了刪除,會出現(xiàn)list錯亂的問題,即使是刪除中間的某一個,但總也是刪除的最后一個。原因是index-1只會刪除最后一個,再重新渲染后會刷新列表。

如果只是新增但是不填寫內(nèi)容,那么刪除了也無所謂,但如果新增后填寫再刪除就出問題了。

解決辦法是使用唯一標識符,也就是id,就是前端自己生成id,根據(jù)id刪除就不會錯亂了。

在這個項目中,因為新建和編輯是同一個頁面,而且在進入這個頁面之后會根據(jù)是否有xxId來區(qū)分是新建還是編輯,因為會請求兩個不同的接口來獲取數(shù)據(jù)。所以在從接口請求回來的返回值那邊做了處理,添加了唯一標識符,也就是selfId。我是對dispatch后獲取的result進行操作。

如下:

const dealListData = (result) => {
    // console.log('listR', result);
    if (result.length===0) {
        result.push({
            selfId:1
        });
    } else {
        result.map((item, index) => {
            item.selfId = String(index + 1);
            return item;
        });
    }
    // console.log(result);
    return result;
};

新增的函數(shù)

list是指幾個Input組成的塊,是要對其新增和刪除

handleAdd = () => {
     let selfId = Number(this.state.list[this.state.list.length-1].selfId) + 1;
     // console.log(this.state.list[this.state.list.length-1].selfId +1);
     this.props.form.validateFields((err, value) => {
        if (!err) {
            this.state.list.push({
                selfId:selfId
        });
        this.props.onChange(this.state.list);
      }
   });
}

刪除的函數(shù)

handleDeleteItem = (i, selfId) => {
    this.setState({ list: this.state.list.filter(item => item.selfId !== selfId) }, () => {
          // console.log('delete', this.state.list);
          this.props.onChange(this.state.list);
    });
}

根據(jù)selfId進行刪除

因為list是我又重新封裝的子組件,而值要實時反映到父組件上去,需要都需要通過this.props.onChange事件去實時更新。這樣刪除和新增就沒有問題了。

總結(jié)

不能根據(jù)下標index進行新增刪除,會錯亂。需要有唯一標識符用來更新。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • React?SSR架構(gòu)Streaming?Render與Selective?Hydration解析

    React?SSR架構(gòu)Streaming?Render與Selective?Hydration解析

    這篇文章主要為大家介紹了React?SSR架構(gòu)Streaming?Render與Selective?Hydration解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • react中關于函數(shù)調(diào)用()與bind this的原因及分析

    react中關于函數(shù)調(diào)用()與bind this的原因及分析

    這篇文章主要介紹了react中關于函數(shù)調(diào)用()與bind this的原因及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺談react受控組件與非受控組件(小結(jié))

    淺談react受控組件與非受控組件(小結(jié))

    本篇文章主要介紹了淺談react受控組件與非受控組件(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 詳解react setState

    詳解react setState

    這篇文章主要介紹了react setState的相關資料,幫助大家更好的理解和學習使用react,感興趣的朋友可以了解下
    2021-04-04
  • 淺談webpack+react多頁面開發(fā)終極架構(gòu)

    淺談webpack+react多頁面開發(fā)終極架構(gòu)

    這篇文章主要介紹了淺談webpack+react多頁面開發(fā)終極架構(gòu),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 基于React Native 0.52實現(xiàn)輪播圖效果

    基于React Native 0.52實現(xiàn)輪播圖效果

    這篇文章主要為大家詳細介紹了基于React Native 0.52實現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • react-native只保留3x圖原理解析

    react-native只保留3x圖原理解析

    這篇文章主要為大家介紹了react-native只保留3x圖原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • ReactNative實現(xiàn)弧形拖動條的代碼案例

    ReactNative實現(xiàn)弧形拖動條的代碼案例

    本文介紹了ReactNative實現(xiàn)弧形拖動條,本組件使用到了react-native-svg和PanResponder,結(jié)合示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 淺談React Component生命周期函數(shù)

    淺談React Component生命周期函數(shù)

    React組件有哪些生命周期函數(shù)?類組件才有的生命周期函數(shù),分為幾個階段:掛載,更新,卸載,錯誤處理,本文主要介紹了這個階段,感興趣的可以了解一下
    2021-06-06
  • React+Node.js實現(xiàn)大文件傳輸與斷點續(xù)傳

    React+Node.js實現(xiàn)大文件傳輸與斷點續(xù)傳

    這篇文章主要為大家詳細介紹了如何使用React前端和Node.js后端實現(xiàn)大文件傳輸和斷點續(xù)傳的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以參考下
    2024-12-12

最新評論