react中涉及的增加,刪除list方式
react涉及的增加,刪除list
做的項目中有一個功能是需要對多個Input組成的list可以新增和刪除。
剛開始想的解決是直接使用index來做,這個可以新增,但是做不了刪除,會出現(xiàn)list錯亂的問題,即使是刪除中間的某一個,但總也是刪除的最后一個。原因是index-1只會刪除最后一個,再重新渲染后會刷新列表。
如果只是新增但是不填寫內(nèi)容,那么刪除了也無所謂,但如果新增后填寫再刪除就出問題了。
解決辦法是使用唯一標(biāo)識符,也就是id,就是前端自己生成id,根據(jù)id刪除就不會錯亂了。
在這個項目中,因為新建和編輯是同一個頁面,而且在進(jìn)入這個頁面之后會根據(jù)是否有xxId來區(qū)分是新建還是編輯,因為會請求兩個不同的接口來獲取數(shù)據(jù)。所以在從接口請求回來的返回值那邊做了處理,添加了唯一標(biāo)識符,也就是selfId。我是對dispatch后獲取的result進(jìn)行操作。
如下:
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進(jìn)行刪除
因為list是我又重新封裝的子組件,而值要實時反映到父組件上去,需要都需要通過this.props.onChange事件去實時更新。這樣刪除和新增就沒有問題了。
總結(jié)
不能根據(jù)下標(biāo)index進(jìn)行新增刪除,會錯亂。需要有唯一標(biāo)識符用來更新。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
React中常見的TypeScript定義實戰(zhàn)教程
這篇文章主要介紹了React中常見的TypeScript定義實戰(zhàn),本文介紹了Fiber結(jié)構(gòu),F(xiàn)iber的生成過程,調(diào)和過程,以及 render 和 commit 兩大階段,需要的朋友可以參考下2022-10-10
React 使用recharts實現(xiàn)散點地圖的示例代碼
這篇文章主要介紹了React 使用recharts實現(xiàn)散點地圖的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
適用于React?Native?旋轉(zhuǎn)木馬應(yīng)用程序介紹
這篇文章主要介紹了適用于React?Native?旋轉(zhuǎn)木馬應(yīng)用程序介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Webpack 4.x搭建react開發(fā)環(huán)境的方法步驟
這篇文章主要介紹了Webpack 4.x搭建react開發(fā)環(huán)境的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
在React聊天應(yīng)用中實現(xiàn)圖片上傳功能
在現(xiàn)代聊天應(yīng)用中,除了文字和表情,圖片分享也是一個重要的功能,本文將詳細(xì)介紹如何在基于 React 的聊天應(yīng)用中實現(xiàn)圖片上傳和預(yù)覽功能,感興趣的小伙伴跟著小編一起來看看吧2025-05-05
React Native實現(xiàn)簡單的登錄功能(推薦)
這篇文章主要介紹了React Native實現(xiàn)登錄功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09

