Diziler veya nesneler gibi iç içe veya derin veri türlerinin hesaplanması söz konusu olduğunda, Vue.js veya başka bir programlama dili, verilerdeki hiyerarşik değişikliği otomatik olarak algılamaz. Ancak, hepimiz biliyoruz ki Vue.js, bazı değişiklik değişkenlerini gerçekleştirmek için izleme ve hesaplanan özellikleri sağlar. Ancak iç içe veri değişiklikleri söz konusu olduğunda, Vue.js bunu algılamıyor. Bu gönderi, dizilerin veya nesnelerin iç içe geçmiş verilerini izleyerek bazı değişiklikleri yapmayı öğrenecek.
Vue'da iç içe verileri izlemeyi öğrenmeden önce.js, önce watch özelliğinin nasıl çalıştığını anlayalım?
Mülkiyet İzle
watch özelliği, bir değişkeni izlemek için kullanılır ve kullanıcının, değişkenin değişikliğinde istenen bazı görevleri gerçekleştirmesine izin verir.
Örnek: Bir Değişken İzleme
Örneğin, bir değişkenin değişiminde bir şeyi teselli etmek istiyoruz. Vue'da böyle bir kod yazmak için sözdizimi şöyle olacaktır:
Bu bir test sayfasıdır
Yukarıdaki kodu yazdıktan sonra web sayfası şu şekilde olacaktır.
Butona tıklarsak butonun on-click özelliğinden dolayı “boolVar”ın durumu değişmeli ve saat “boolVar”daki değişikliği otomatik olarak algılamalı ve mesaj dizisini konsolda göstermelidir.
Mükemmel bir şekilde çalıştı; konsolda “Düğme tıklandı” mesajı görüntüleniyor.
Ancak, izleyici değişikliği algılayamaz ve dizileri veya nesneleri izlemeye geldiğinde kovulmaz. Bunun bir gösterimini görelim.
Örnek: Bir Nesneyi İzlemek
Bileşenimizde bir nesnemiz olduğunu ve nesnenin özelliğinde meydana gelen değişikliği görüntülemek istediğimizi varsayalım. Aşağıda verilen örnekte, “item” ve “quantity” olmak üzere iki anahtar/değer çiftini içeren “objVar” adında bir nesne oluşturdum. Şablon etiketinin miktarına “1” eklediğim bir düğme oluşturdum. Son olarak, watch özelliğinde “objVar” nesnesini izliyorum ve bir konsol mesajı görüntülüyorum.
Bu bir test sayfasıdır
Şimdi, bu kodun nesnenin miktarındaki değişikliği göstermesi gerekiyor. Ancak kodu çalıştırdığımızda ve web sayfasındaki butona tıkladığımızda:
Yukarıdaki gifte görebilirsiniz; konsolda hiçbir şey olmuyor.
Bunun nedeni, izleyicinin nesnelerin değerlerine derinlemesine bakmamasıdır ve şimdi çözeceğimiz asıl sorun budur.
Vue.js, nesnelerin ve dizilerin değerlerini derinlemesine izlemek için deep özelliğini sağlar. Deep özelliğini kullanmak ve iç içe verileri izlemek için sözdizimi aşağıdaki gibidir:
Bu sözdiziminde, deep özelliğini true olarak ayarladık ve handler() işlevini yeniden düzenledik.
Şimdi, kodu değiştirdikten sonra, web sayfasını yeniden yüklersek ve butona tıklarsak:
Burada izleyicinin çalıştığını ve mesajı konsolda görüntülediğini görebilirsiniz.
Sonuç
Bu gönderiyi okuduktan sonra, Vue'da derin veya iç içe veri yapılarını izleyerek ve hesaplayarak.js artık zor değil. Bir nesne veya dizideki bir değerin değişimini nasıl izleyeceğimizi ve Vue'nin “deep” özelliği yardımıyla bazı görevleri nasıl yürüteceğimizi öğrendik.js.