React'ta Shadow DOM mu var yoksa sadece Virtual DOM mu?
sobes.tech yapay zeka
AI'dan gelen yanıt
React'te varsayılan olarak Virtual DOM kullanılır. Shadow DOM, web bileşenlerinin ayrı bir teknolojisidir.
React, kullanıcı arayüzü güncellemelerinin performansını artırmak için Virtual DOM kullanır. Her durum değişikliğinde, React gerçek DOM'u doğrudan manipüle etmek yerine, hafif bir kopyasını (Virtual DOM) hafızada oluşturur. Değişikliklerde, React mevcut Virtual DOM ile önceki versiyonu karşılaştırır, en küçük farkları bulur ve yalnızca gerekli olan gerçek DOM parçalarını günceller.
Shadow DOM ise, web bileşenleri standardının bir parçasıdır ve stilleri ve yapıyı kapsüllemek için tasarlanmıştır. Bağımsız bir DOM ağacı oluşturur ve ana belgeyle izole olur.
React, Shadow DOM kullanan web bileşenleriyle birlikte kullanılabilir, ancak React varsayılan olarak Shadow DOM oluşturmaz veya kullanmaz.
// React'te Virtual DOM kavramına örnek
// Durum değiştiğinde, React VDOM'u karşılaştırır
// ve yalnızca değişen DOM parçalarını günceller
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
increment() {
this.setState({ count: this.state.count + 1 });
// React, gerçek DOM'daki sayısal metin düğümünü güncelleyecektir
}
render() {
return (
<div>
<p>Sayaç: {this.state.count}</p> {/* Bu bileşen kısmı sanallaştırılacaktır */}
<button onClick={() => this.increment()}>Arttır</button>
</div>
);
}
}
<!-- Shadow DOM kullanımı örneği -->
<my-custom-element></my-custom-element>
<script>
customElements.define('my-custom-element', class extends HTMLElement {
constructor() {
super();
const shadowRoot = this.attachShadow({ mode: 'open' }); // Shadow DOM oluştur
shadowRoot.innerHTML = `
<style>
p { color: blue; } /* Shadow DOM'da kapsüllenmiş stil */
</style>
<p>Bu metin Shadow DOM'dadır</p>
`;
}
});
</script>
Ana farklar:
| Özellik | Virtual DOM | Shadow DOM |
|---|---|---|
| Bu nedir? | Bellekte konsept/desen | Tarayıcı teknolojisi |
| Amacı | UI güncellemelerini optimize etmek | Stil ve yapıyı kapsüllemek |
| Nerede kullanılır? | Frameworkler/Kütüphaneler (React, Vue) | Web bileşenleri |
| Nasıl çalışır? | Bellekte ağaç karşılaştırması yapar | İzole edilmiş DOM ağacı oluşturur |