12345678910111213141516171819202122232425262728293031323334353637383940 |
- /*
- Example: Manual Edits
- It's possible to manually provide a stream of DomEdits to a Dioxus Renderer. All renderers are designed to accept a stream
- of DomEdits that abstract over a stack machine. This allows the VirtualDOM to exist entirely separately from the RealDOM,
- though features like NodeRefs and NativeEvents might not work properly everywhere.
- */
- use dioxus::core::*;
- use dioxus::prelude::*;
- fn main() {
- use DomEdit::*;
- let edits = vec![
- // create a container and push it onto the stack
- CreateElement { tag: "div", id: 0 },
- // create an element and push it onto the stack
- CreateElement { tag: "h1", id: 2 },
- // create a text node and push it onto the stack
- CreateTextNode {
- text: "hello world",
- id: 3,
- },
- // append the text node to the h1 element
- AppendChildren { many: 1 },
- // append the h1 element to the container
- AppendChildren { many: 1 },
- // append the container to the default render element ("dioxusroot" if used with default config)
- AppendChildren { many: 1 },
- ];
- dioxus_desktop::WebviewRenderer::run_with_edits(APP, (), |c| c, Some(edits)).expect("failed");
- }
- const APP: FC<()> = |cx, _props| {
- rsx!(cx, div {
- "some app"
- })
- };
|