handleDelete
Açıklama: Bu fonksiyon, tablo satırını silmek için API'ye bir silme isteği gönderir. Silme işlemi tamamlandıktan sonra tablo yeniden yüklenir.
Kod
handleDelete(row: Row<unknown>, callback?: () => void) {
if (!this.CRUDUrl || !this.deletePropertyName) return;
const deletedRowId = (row?.original as { id: any })?.id as any;
if (deletedRowId === undefined) return;
const params = {
[this.deletePropertyName || "id"]: deletedRowId,
};
this.setTableLoading(true);
axiosInstance
.delete(`${this.CRUDUrl}`, { params })
.then(() => {
this.initialProcess();
callback?.();
this.setTableLoading(false);
})
.catch(() => {
callback?.();
this.setTableLoading(false);
});
}
Ne İşe Yarar?
- Kullanıcının seçtiği tablo satırını siler.
- Silme işleminden sonra tablo verilerini yeniler.
Parametreler
Parametre | Tipi | Açıklama |
---|---|---|
row | Row<unknown> | Silinecek satırın verilerini temsil eder. |
callback | () => void | İşlem tamamlandığında çağrılacak opsiyonel fonksiyon. |
Kullanım Alanları
1. ActionsCell
- Kullanım Amacı: Silme butonuna tıklandığında satır verilerini API'ye göndermek için çağrılır.
- Kullanıldığı Yer:
ActionsCell
bileşeninde.
onDeleteClick={(row) => tableService.handleDelete(row)}
2. OpsTableProvider
- Kullanım Amacı: Tablo silme işlemini desteklemek ve tabloyu güncellemek için çağrılır.
- Kullanıldığı Fonksiyon:
handleDelete
tableService.handleDelete(selectedRow);
İş Mantığı
-
Satır Kimliği Alma:
- Silinecek satırın kimliği (
id
) alınır.
- Silinecek satırın kimliği (
-
API Silme İsteği:
axiosInstance
kullanılarak satır silme isteği API'ye gönderilir.
-
Tablo Yeniden Yükleme:
- Silme işlemi başarılı olursa
initialProcess
fonksiyonu çağrılarak tablo yeniden yüklenir.
- Silme işlemi başarılı olursa
-
Callback Yönetimi:
- İşlem tamamlandığında opsiyonel
callback
fonksiyonu çağrılır.
- İşlem tamamlandığında opsiyonel
-
Hata Yönetimi:
- API çağrısında hata oluşursa yükleme durumu sıfırlanır ve kullanıcı bilgilendirilir.
Önemli İpuçları
this.CRUDUrl
veyathis.deletePropertyName
boşsa, silme işlemi başlatılamaz. Bu nedenle kontrol edilmelidir.- API'den gelen yanıtın başarılı olup olmadığını kontrol edin ve işleme devam edin.
- Kullanıcı deneyimini artırmak için silme işlemi sırasında bir yükleme animasyonu göstermek önerilir.
- Tabloyu yeniden yüklerken gereksiz API çağrılarından kaçınmak için önbellek mekanizmaları kullanılabilir.