javascript - Composition API ile diziyi güncelleme
Pinia mağazası kurulu Vue kullanıyorum.
export default {
setup() {
let rows: Row[] = store.history.rows;
}
}
Bu iyi çalışıyor, ama daha sonra diziyi üzerine yazmak ve filtrelemek istiyorum:
const filterArray = () => {
rows=store.history.rows;
for (let index = 0; index < rows.length; index++){
if (rows[index].department !== departmentModel.value) {
rows.splice(index, 1);
}
}
};
Bir şekilde filterArray yöntemi, store.history.rows dizisindeki objeleri de kaldırıyor, bu yüzden her iki dizi de yakında boş olacak. Benim başarmak istediğim şey, her filterArray çağrıldığında, rows dizisinin, tüm objeleri içeren store.history.rows dizisi ile üzerine yazılması ve ardından rows dizisinin if ifadesine göre filtrelenmesi.
Ben neyi yanlış yapıyorum?
Cevap #1
rows=store.history.rows olarak ayarladığınızda, dizi kopyalanmaz. Bu sadece bir işaretçi gibi çalışır ve aynı diziye referans verir.
Bunu, diziyi değiştirmeye başlamadan önce bir kopyasını yaparak önleyebilirsiniz
rows = [...store.history.rows];
Ya da işlevsel konvansiyonları kullanırsınız, ki bence zaten tercih edilen yol bu.
const filterArray = () => {
rows = store.history.rows.filter(item => item.department === departmentModel.value)
}
bu, verilen departmentModel.value ile eşleşen öğelerden oluşan yeni bir dizi oluşturacaktır.
