redraw()
Açıklama
Uygulama veri katmanında bir değişiklik olduğunda DOM'u günceller.
Mithril.js görünümünde tanımlı bir olay işleyicisinin bağlamında çalışırken veya m.request
kullanıldığında istek tamamlandığında veri değişirse, bu fonksiyonu çağırmanıZA GEREK YOKTUR. m.redraw()
üzerine inşa edilmiş otomatik yeniden çizim sistemi bu işlemi otomatik olarak gerçekleştirir.
setTimeout
/setInterval
/requestAnimationFrame
geri çağrıları veya 3. parti kütüphanelerden gelen geri çağrılarda çağırmanız GEREKİR.
İmza
m.redraw()
Argüman | Tip | Gerekli | Açıklama |
---|---|---|---|
döndürür | Herhangi bir değer döndürmez. |
Statik Üyeler
m.redraw.sync
m.redraw.sync()
Argüman | Tip | Gerekli | Açıklama |
---|---|---|---|
döndürür | Herhangi bir değer döndürmez. |
Nasıl Çalışır
Mithril.js dışındaki geri çağrılar çalıştığında, Mithril.js'nin işleme motoruna yeniden çizim yapılması gerektiğini bildirmeniz gerekir. Harici geri çağrılar setTimeout
/setInterval
/requestAnimationFrame
geri çağrıları, web soketi kütüphanelerinin geri çağrıları, jQuery eklentilerindeki olay işleyicileri, üçüncü taraf XHR istek geri çağrıları vb. olabilir.
Yeniden çizimi başlatmak için m.redraw()
'ı çağırın. m.redraw
'un yalnızca m.mount
veya m.route
kullandıysanız çalıştığını unutmayın. m.render
aracılığıyla işlediyseniz, yeniden çizmek için m.render
'ı kullanmalısınız.
m.redraw()
her zaman eşzamansız yeniden çizimleri tetiklerken, m.redraw.sync()
eşzamanlı bir yeniden çizimi tetikler. m.redraw()
, window.requestAnimationFrame()
'e bağlıdır. Bu nedenle saniyede en fazla 60 kez tetiklenir. Ekranınız daha yüksek bir yenileme hızına sahipse, daha sık tetiklenebilir.
m.redraw.sync()
, çoğunlukla iOS'ta video oynatmayı mümkün kılmak için tasarlanmıştır. Bu yalnızca kullanıcı tarafından tetiklenen olaylara yanıt olarak çalışır. Aşağıdaki hususlara dikkat edilmelidir:
- Bir yaşam döngüsü metodu veya bir bileşenin
view()
metodundanm.redraw.sync()
'u çağırmamalısınız. Bunu yapmak, öngörülemeyen davranışlara yol açar (mümkünse bir hata fırlatılır). m.redraw.sync()
bir olay işleyicisinden çağrıldığında, olay yayılırken DOM'un değişmesine yol açabilir. Eski ve yeni DOM ağaçlarının yapısı farklıysa, olay yeni ağaçta yayılmaya devam edebilir ve istenmeyen işleyicilerin çalışmasına neden olabilir.- Hız sınırlaması yoktur.
m.redraw.sync()
'a yapılan bir çağrı,m.mount()
veyam.route()
ile kaydedilen her kök bileşen için hemen birm.render()
çağrısına neden olur.
m.redraw()
bu sorunlara sahip değildir, bu nedenle istediğiniz yerden çağırabilirsiniz.