examples: upgrade to new version of dioxus core.

also add the inline_props macro
This commit is contained in:
Jonathan Kelley committed 2021-12-25 17:18:05 -05:00
1 parent 21e00c114e
commit cda759c659
41 files changed
+556 -253

No files matched your search

+1 -1
View File
@@ -17,7 +17,7 @@ pub static App: Component<()> = |cx| {
let (async_count, dir) = (count.for_async(), *direction);
let (task, _) = use_coroutine(cx, move || async move {
let task = use_coroutine(&cx, move || async move {
loop {
TimeoutFuture::new(250).await;
*async_count.get_mut() += dir;
+2 -2
View File
@@ -40,7 +40,7 @@ struct C1Props<'a> {
}
fn Child1<'a>(cx: Scope<'a, C1Props<'a>>) -> Element {
let (left, right) = props.text.split_once("=").unwrap();
let (left, right) = cx.props.text.split_once("=").unwrap();
cx.render(rsx! {
div {
@@ -58,7 +58,7 @@ struct C2Props<'a> {
fn Child2<'a>(cx: Scope<'a, C2Props<'a>>) -> Element {
cx.render(rsx! {
Child3 {
text: props.text
text: cx.props.text
}
})
}
+1 -1
View File
@@ -124,6 +124,6 @@ fn CalculatorKey<'a>(cx: Scope<'a, CalculatorKeyProps<'a>>) -> Element {
rsx!(cx, button {
class: "calculator-key {cx.props.name}"
onclick: {cx.props.onclick}
{&props.children}
{&cx.props.children}
})
}
+3 -3
View File
@@ -58,15 +58,15 @@ static App: Component<()> = |cx| {
#[derive(Props)]
struct HorseyProps<'a> {
pos: i32,
children: ScopeChildren<'a>,
children: Element<'a>,
}
fn Horsey<'a>((cx, props): ScopeState<'a, HorseyProps<'a>>) -> Element {
fn Horsey<'a>(cx: Scope<'a, HorseyProps<'a>>) -> Element {
cx.render(rsx! {
div {
button { "pause" }
div {
{&props.children}
{&cx.props.children}
}
}
})
+1 -1
View File
@@ -8,7 +8,7 @@
use dioxus::prelude::*;
fn main() {
simple_logger::init_with_level(log::Level::Debug);
// simple_logger::init_with_level(log::Level::Debug);
dioxus::desktop::launch_cfg(App, |c| {
c.with_window(|w| {
w.with_resizable(true).with_inner_size(
+1 -1
View File
@@ -97,7 +97,7 @@ struct ActionButtonProps<'a> {
fn ActionButton<'a>(cx: Scope<'a, ActionButtonProps<'a>>) -> Element {
rsx!(cx, div { class: "col-sm-6 smallpad"
button { class:"btn btn-primary btn-block", r#type: "button", id: "{cx.props.id}", onclick: move |_| (props.onclick)(),
button { class:"btn btn-primary btn-block", r#type: "button", id: "{cx.props.id}", onclick: move |_| (cx.props.onclick)(),
"{cx.props.name}"
}
})
+2 -2
View File
@@ -1,10 +1,10 @@
use dioxus::prelude::*;
fn main() {
dioxus::desktop::launch(App);
dioxus::desktop::launch(app);
}
fn App((cx, props): ScopeState<()>) -> Element {
fn app(cx: Scope<()>) -> Element {
cx.render(rsx! (
div { "Hello, world!" }
))
+2 -2
View File
@@ -14,9 +14,9 @@ use dioxus::ssr;
fn main() {
let vdom = VirtualDom::new(App);
let content = ssr::render_vdom(&vdom, |f| f.pre_render(true));
let content = ssr::render_vdom_cfg(&vdom, |f| f.pre_render(true));
dioxus::desktop::launch(App, |c| c.with_prerendered(content));
dioxus::desktop::launch_cfg(App, |c| c.with_prerendered(content));
}
static App: Component<()> = |cx| {
+3 -7
View File
@@ -33,11 +33,7 @@ fn main() {
AppendChildren { many: 1 },
];
dioxus_desktop::run(APP, (), |c| c.with_edits(edits));
}
let app: Component<()> = |cx| rsx!(cx, div { "some app" });
const APP: Component<()> = |(cx, _props)| {
rsx!(cx, div {
"some app"
})
};
dioxus_desktop::run(app, (), |c| c.with_edits(edits));
}
+8 -6
View File
@@ -15,6 +15,8 @@
//! the RefCell will panic and crash. You can use `try_get_mut` or `.modify` to avoid this problem, or just not hold two
//! RefMuts at the same time.
use std::sync::Arc;
use dioxus::desktop::wry::application::dpi::LogicalSize;
use dioxus::events::*;
use dioxus::prelude::*;
@@ -73,16 +75,16 @@ static App: Component<()> = |cx| {
#[derive(Props)]
struct CalculatorKeyProps<'a> {
name: &'static str,
onclick: &'a dyn Fn(MouseEvent),
children: ScopeChildren<'a>,
onclick: &'a dyn Fn(Arc<MouseEvent>),
children: Element<'a>,
}
fn CalculatorKey<'a>((cx, props): ScopeState<'a, CalculatorKeyProps<'a>>) -> Element<'a> {
fn CalculatorKey<'a>(cx: Scope<'a, CalculatorKeyProps<'a>>) -> Element {
cx.render(rsx! {
button {
class: "calculator-key {cx.props.name}"
onclick: {cx.props.onclick}
{&props.children}
onclick: move |e| (cx.props.onclick)(e)
{&cx.props.children}
}
})
}
@@ -168,7 +170,7 @@ impl Calculator {
self.cur_val = self.display_value.parse::<f64>().unwrap();
self.waiting_for_operand = true;
}
fn handle_keydown(&mut self, evt: KeyboardEvent) {
fn handle_keydown(&mut self, evt: Arc<KeyboardEvent>) {
match evt.key_code {
KeyCode::Backspace => self.backspace(),
KeyCode::Num0 => self.input_digit(0),
+2 -24
View File
@@ -1,5 +1,5 @@
use dioxus::prelude::*;
use dioxus::router::Router;
use dioxus_router::{use_router, Link};
#[derive(PartialEq, Debug, Clone)]
pub enum Route {
@@ -24,7 +24,7 @@ pub enum Route {
}
static App: Component<()> = |cx| {
let route = use_router(cx, Route::parse)?;
let route = use_router(&cx, Route::parse);
cx.render(rsx! {
nav {
@@ -61,26 +61,4 @@ impl Route {
}
}
impl Routable for Route {
fn from_path(path: &str, params: &std::collections::HashMap<&str, &str>) -> Option<Self> {
todo!()
}
fn to_path(&self) -> String {
todo!()
}
fn routes() -> Vec<&'static str> {
todo!()
}
fn not_found_route() -> Option<Self> {
todo!()
}
fn recognize(pathname: &str) -> Option<Self> {
todo!()
}
}
fn main() {}
+7 -9
View File
@@ -39,7 +39,7 @@
//! - Allow top-level fragments
//!
fn main() {
dioxus::desktop::launch(Example);
dioxus::desktop::launch(EXAMPLE);
}
/// When trying to return "nothing" to Dioxus, you'll need to specify the type parameter or Rust will be sad.
@@ -49,7 +49,7 @@ const NONE_ELEMENT: Option<()> = None;
use baller::Baller;
use dioxus::prelude::*;
pub static Example: Component<()> = |cx| {
pub static EXAMPLE: Component<()> = |cx| {
let formatting = "formatting!";
let formatting_tuple = ("a", "b");
let lazy_fmt = format_args!("lazily formatted text");
@@ -173,12 +173,12 @@ pub static Example: Component<()> = |cx| {
Taller { a: "asd", div {"hello world!"} }
// helper functions
{helper(cx, "hello world!")}
{helper(&cx, "hello world!")}
}
})
};
fn helper(cx: Scope, text: &str) -> Element {
fn helper<'a>(cx: &'a ScopeState, text: &str) -> Element<'a> {
rsx!(cx, p { "{text}" })
}
@@ -188,7 +188,7 @@ mod baller {
pub struct BallerProps {}
/// This component totally balls
pub fn Baller(_: ScopeState<BallerProps>) -> Element {
pub fn Baller(_: Scope<BallerProps>) -> Element {
todo!()
}
}
@@ -196,13 +196,11 @@ mod baller {
#[derive(Props)]
pub struct TallerProps<'a> {
a: &'static str,
#[builder(default)]
children: ScopeChildren<'a>,
children: Element<'a>,
}
/// This component is taller than most :)
pub fn Taller<'a>(_: ScopeState<'a, TallerProps<'a>>) -> Element {
pub fn Taller<'a>(_: Scope<'a, TallerProps<'a>>) -> Element {
let b = true;
todo!()
}
+3 -12
View File
@@ -1,15 +1,13 @@
#![allow(non_upper_case_globals)]
use dioxus::prelude::*;
use dioxus::ssr;
fn main() {
let mut vdom = VirtualDom::new(App);
vdom.rebuild_in_place().expect("Rebuilding failed");
let mut vdom = VirtualDom::new(APP);
let _ = vdom.rebuild();
println!("{}", ssr::render_vdom(&vdom));
}
static App: Component<()> = |cx| {
static APP: Component<()> = |cx| {
cx.render(rsx!(
div {
h1 { "Title" }
@@ -17,10 +15,3 @@ static App: Component<()> = |cx| {
}
))
};
struct MyProps<'a> {
text: &'a str,
}
fn App2<'a>(cx: Scope<'a, MyProps<'a>>) -> Element {
None
}
+1 -1
View File
@@ -2,7 +2,7 @@ use dioxus::prelude::*;
fn main() {
use dioxus::desktop::wry::application::platform::macos::*;
dioxus::desktop::launch(App, |c| {
dioxus::desktop::launch_cfg(App, |c| {
c.with_window(|w| {
w.with_fullsize_content_view(true)
.with_titlebar_buttons_hidden(false)
+8 -13
View File
@@ -6,29 +6,24 @@ use std::time::Duration;
use dioxus::prelude::*;
fn main() {
dioxus::desktop::launch(App);
dioxus::desktop::launch(app);
}
static App: Component<()> = |cx| {
fn app(cx: Scope<()>) -> Element {
let mut count = use_state(&cx, || 0);
cx.push_task(async move {
cx.push_task(|| async move {
tokio::time::sleep(Duration::from_millis(100)).await;
println!("setting count");
count += 1;
// count.set(10);
// *count += 1;
// let c = count.get() + 1;
// count.set(c);
});
cx.render(rsx! {
div {
h1 { "High-Five counter: {count}" }
// button {
// onclick: move |_| count +=1 ,
// "Click me!"
// }
button {
onclick: move |_| count +=1 ,
"Click me!"
}
}
})
};
}
+6 -6
View File
@@ -23,9 +23,9 @@ pub struct TodoItem {
const STYLE: &str = include_str!("./assets/todomvc.css");
const App: Component<()> = |cx| {
let mut draft = use_state(&cx, || "".to_string());
let mut todos = use_state(&cx, || HashMap::<u32, Rc<TodoItem>>::new());
let mut filter = use_state(&cx, || FilterState::All);
let draft = use_state(&cx, || "".to_string());
let todos = use_state(&cx, || HashMap::<u32, Rc<TodoItem>>::new());
let filter = use_state(&cx, || FilterState::All);
let todolist = todos
.iter()
@@ -86,9 +86,9 @@ pub struct TodoEntryProps {
}
pub fn TodoEntry(cx: Scope<TodoEntryProps>) -> Element {
let mut is_editing = use_state(&cx, || false);
let mut contents = use_state(&cx, || String::from(""));
let todo = &props.todo;
let is_editing = use_state(&cx, || false);
let contents = use_state(&cx, || String::from(""));
let todo = &cx.props.todo;
rsx!(cx, li {
"{todo.id}"
+2 -2
View File
@@ -45,8 +45,8 @@ struct RowProps {
row_id: usize,
label: Label,
}
fn Row((cx, props): ScopeState<RowProps>) -> Element {
let [adj, col, noun] = props.label.0;
fn Row(cx: Scope<RowProps>) -> Element {
let [adj, col, noun] = cx.props.label.0;
cx.render(rsx! {
tr {
td { class:"col-md-1", "{cx.props.row_id}" }