Isolation
Zwei Geschwister-Komponenten ohne Key, die einander nachweislich nicht neu rendern können: Deja-Zustand benachrichtigt genau einen Listener — die besitzende Komponente.
Component A renders: 3
#1 — delectus aut autem
Component B renders: 3
#2 — quis ut nam facilis et officia qui
Each panel owns its own unkeyed Query<T>. Reloading one advances its render
counter while the other's stays frozen — Deja state notifies a single attached listener, and
that listener is the owning component.
<div class="demo-panels">
<IsolationPanel Title="Component A" TodoId="1"/>
<IsolationPanel Title="Component B" TodoId="2"/>
</div>
<p class="demo-note">
Each panel owns its own unkeyed <code>Query<T></code>. Reloading one advances its render
counter while the other's stays frozen — Deja state notifies a single attached listener, and
that listener is the owning component.
</p>Warum das wichtig ist#
Event- oder Store-basierte State-Manager senden per Broadcast: Der Refresh einer Komponente
zwingt jeden Subscriber durch ein Re-Render. Dejas IDejaObservable hat einen
einzigen Listener-Slot — ein zweiter Listener wirft eine Exception, und der eine
Listener ist die besitzende Komponente. Die Render-Zähler machen die Garantie beobachtbar:
Lade Panel A so schnell neu, wie du willst — der Zähler von Panel B bewegt sich nie.
Teilen ohne Kopplung#
Wenn zwei Komponenten Daten teilen sollen, teile nicht die Query — teile den
Cache-Eintrag, indem du denselben Key verwendest (siehe die Demo
Gemeinsamer Cache), oder reiche Data als
[Parameter] nach unten weiter. Beide Wege halten die Besitzverhältnisse
eindeutig und Renders lokal begrenzt.