Vixen
02b45cc4
csharp
public abstract class Component

A reusable piece of interface: some state, and a Build that turns it into elements.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

What a .vxml compiles into. Vixen.Ui.Markup emits a partial class deriving from this whose Build is one statement per element and one effect per dynamic expression — so writing a component by hand and generating one produce the same thing, and the generated half is steppable rather than magic (ADR-002).

Build runs once. That is the whole of ADR-010: there is no render function to call again, no virtual DOM to diff, and no reason to walk a tree that did not change. What changes later changes because an effect ran, and an effect assigns exactly the property it was written for.

Fields and properties (5)

  • public UiElement Root

    The element this component drew itself into.

  • public UiElement Content

    Where a caller's children are projected.

  • protected internal virtual string TagName

    The element name this component's host answers to.

  • protected virtual string? Style

    The component's own stylesheet, if it declared a <style> block.

  • protected virtual bool StyleIsScoped

    Whether that stylesheet was marked scoped.

Methods (2)

  • protected abstract void Build(BuildContext ctx)

    Builds this component's elements.

  • protected virtual void OnUnmounted()

    Called when the component leaves the tree, before its effects are disposed.

Used by (44, showing 40)

  • BadEventVixen.Ui.Tests
  • BarVixen.Ui.Controls.Tests
  • BareVixen.Ui.Tests
  • BoundVixen.Ui.Tests
  • BoxesVixen.Ui.HotReload.Tests
  • BranchingVixen.Ui.Tests
  • BuildContextVixen.Ui
  • CarryingVixen.Ui.HotReload.Tests
  • ClickableVixen.Ui.Tests
  • CompositionTestsVixen.Ui.Tests
  • CounterVixen.Ui.Tests
  • CountingVixen.Ui.HotReload.Tests
  • EffectPassTestsVixen.Ui.Tests
  • EmitterTestsVixen.Ui.Markup.Tests
  • EntryVixen.Ui.HotReload
  • FocusableVixen.Ui.HotReload.Tests
  • GuestVixen.Ui.Tests
  • HostVixen.Ui.Tests
  • HostingVixen.Ui.Tests
  • HotReloadHostVixen.Ui.HotReload
  • HotReloadTestsVixen.Ui.HotReload.Tests
  • LeadingBranchVixen.Ui.Tests
  • ListingVixen.Ui.Tests
  • LooseVixen.Ui.Tests
  • MarkupTestsVixen.Ui.Controls.Tests
  • MixedVixen.Ui.Tests
  • NestedVixen.Ui.Tests
  • OuterVixen.Ui.Tests
  • PanelVixen.Ui.Tests
  • PlainVixen.Ui.Controls.Tests
  • PressableVixen.Ui.Controls.Tests
  • ProjectingVixen.Ui.HotReload.Tests
  • ScopedVixen.Ui.Tests
  • ScopedStyleTestsVixen.Ui.Tests
  • SwitchingVixen.Ui.Tests
  • UiDocumentVixen.Ui
  • VxmlGeneratorTestsVixen.Ui.Markup.Generators.Tests
  • BrushInspectorMarkupTestsVixen.Editor.Terrain.Tests
  • EditorSessionVixen.Editor.Testing
  • MarkupInspectorVixen.Editor.Inspector