3.0 KiB
Application Mounter: Mount( )
The Mount function is the entry point of your reactive world. It bridges the gap between your SigPro logic and the browser's Real DOM by injecting a component into the document and initializing its reactive lifecycle.
Function Signature
Mount(node: Function | HTMLElement, target?: string | HTMLElement): RuntimeObject
| Parameter | Type | Default | Description |
|---|---|---|---|
node |
Function or Node |
Required | The component function or DOM element to render. |
target |
string or Node |
document.body |
CSS selector or DOM element where the app will live. |
Returns: A Runtime object containing the container and a destroy() method to wipe all reactivity and DOM nodes.
Common Usage Scenarios
1. The SPA Entry Point
In a Single Page Application, you typically mount your main component to the body or a root div. SigPro manages the entire view from that point.
import SigPro from 'sigpro';
import App from './App.js';
// Mounts your main App component
Mount(App, '#app-root');
2. Reactive "Islands"
SigPro is perfect for adding reactivity to static pages. You can mount small widgets into specific parts of an existing HTML layout.
const Counter = () => {
const count = $(0);
return Button({ onclick: () => count(c => c + 1) }, [
"Clicks: ", count
]);
};
// Mount only the counter into a specific sidebar div
Mount(Counter, '#sidebar-widget');
How it Works (Lifecycle & Cleanup)
When Mount is executed, it performs these critical steps to ensure a leak-free environment:
- Duplicate Detection: If you call
Mounton a target that already has a SigPro instance, it automatically calls.destroy()on the previous instance. This prevents "Zombie Effects" from stacking in memory. - Internal Scoping: It executes the component function inside an internal Reactive Owner. This captures every
Watchand event listener created during the render. - Target Injection: It clears the target using
replaceChildren()and appends the new component. - Runtime Creation: It returns a control object:
container: The actual DOM element created.destroy(): The "kill switch" that runs all cleanups, stops all watchers, and removes the element from the DOM.
Manual Unmounting
While SigPro handles most cleanups automatically (via If, For, and Router), you can manually destroy any mounted instance. This is vital for imperatively managed UI like Toasts or Modals.
const instance = Mount(MyToast, '#toast-container');
// Later, to remove the toast and kill its reactivity:
instance.destroy();
Summary Cheat Sheet
| Goal | Code Pattern |
|---|---|
| Mount to body | Mount(App) |
| Mount to CSS Selector | Mount(App, '#root') |
| Mount to DOM Node | Mount(App, myElement) |
| Clean & Re-mount | Calling Mount again on the same target |
| Total Cleanup | const app = Mount(App); app.destroy(); |