mirror of
https://github.com/DioxusLabs/dioxus
synced 2025-01-10 19:58:53 +00:00
508c560320
This change switches back to the original `ctx<props>` syntax for commponents. This lets lifetime elision to remove the need to match exactly which lifetime (props or ctx) gets carried to the output. As such, `Props` is currently required to be static. It *is* possible to loosen this restriction, and will be done in the future, though only through adding metadata about the props through the Props derive macro. Implementing the IS_STATIC trait is unsafe, so the derive macro will do it through some heuristics. For now, this unlocks sharing vnodes from parents to children, enabling pass-thru components, fragments, portals, etc.
65 lines
2 KiB
Rust
65 lines
2 KiB
Rust
//! An example where the dioxus vdom is running in a native thread, interacting with webview
|
|
//! Content is passed from the native thread into the webview
|
|
use dioxus_core::prelude::*;
|
|
|
|
fn main() {
|
|
dioxus_webview::launch(
|
|
|builder| {
|
|
builder
|
|
.title("Test Dioxus App")
|
|
.size(320, 480)
|
|
.resizable(false)
|
|
.debug(true)
|
|
},
|
|
(),
|
|
Example,
|
|
)
|
|
.expect("Webview finished");
|
|
}
|
|
|
|
static Example: FC<()> = |ctx| {
|
|
ctx.render(html! {
|
|
<div>
|
|
<svg class="octicon octicon-star v-align-text-bottom"
|
|
viewBox="0 0 14 16" version="1.1"
|
|
width="14" height="16"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
|
|
<path
|
|
d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
</path>
|
|
|
|
</svg>
|
|
</div>
|
|
})
|
|
};
|
|
// static Example: FC<()> = |ctx| {
|
|
// ctx.render(rsx! {
|
|
// div {
|
|
// class: "flex items-center justify-center flex-col"
|
|
// div {
|
|
// class: "flex items-center justify-center"
|
|
// div {
|
|
// class: "flex flex-col bg-white rounded p-4 w-full max-w-xs"
|
|
// div { class: "font-bold text-xl", "Example desktop app" }
|
|
// div { class: "text-sm text-gray-500", "This is running natively" }
|
|
// div {
|
|
// class: "flex flex-row items-center justify-center mt-6"
|
|
// div { class: "font-medium text-6xl", "100%" }
|
|
// }
|
|
// div {
|
|
// class: "flex flex-row justify-between mt-6"
|
|
// a {
|
|
// href: "https://www.dioxuslabs.com"
|
|
// class: "underline"
|
|
// "Made with dioxus"
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// })
|
|
// };
|