Top Level

There are no limits on what can be defined or used in the top level (of a file).

MyView.jsx
import { State } from "@denshya/reactive" const text = new State("Global Text") const helloWorldView = <div>Hello World! {text}div> const replacedView = <div>I'm Replaced! {text}div> // ^ These won't be inflated immediately, this just creates JSX objects, // which can be perceived as element references.

You can define states, JSX or even inflate it at top level.

MyView.jsx
import { inflator } from "./inflator" const inflatedHelloWorld = inflator.inflate(helloWorldView) function MyView() { this.view.set(helloWorldView) requestAnimationFrame(() => { const number = Math.floor(Math.random() * 100) text.set(`Global Text: ${number}`) }) setTimeout(() => this.view.set(inflatedHelloWorld), 1_000) setTimeout(() => this.view.set(replacedView), 1_000) setTimeout(() => this.view.set(<div>{text} everywherediv>), 1_000) setTimeout(() => this.view.set(<ChildView />), 1_000) } function ChildView() { return <div>{text} everywherediv> } export default MyView