2024-02-14 20:33:07 +00:00
|
|
|
//! This example demonstrates how to create a generic component in Dioxus.
|
|
|
|
//!
|
|
|
|
//! Generic components can be useful when you want to create a component that renders differently depending on the type
|
|
|
|
//! of data it receives. In this particular example, we're just using a type that implements `Display` and `PartialEq`,
|
2023-04-23 16:54:40 +00:00
|
|
|
|
2022-11-16 04:58:56 +00:00
|
|
|
use dioxus::prelude::*;
|
2024-02-14 20:33:07 +00:00
|
|
|
use std::fmt::Display;
|
2022-11-16 04:58:56 +00:00
|
|
|
|
|
|
|
fn main() {
|
2024-01-16 17:45:02 +00:00
|
|
|
launch_desktop(app);
|
2022-11-16 04:58:56 +00:00
|
|
|
}
|
|
|
|
|
2024-01-14 04:51:37 +00:00
|
|
|
fn app() -> Element {
|
2024-01-16 19:18:46 +00:00
|
|
|
rsx! {
|
2024-01-11 20:11:27 +00:00
|
|
|
generic_child { data: 0 }
|
|
|
|
}
|
2023-04-23 16:54:40 +00:00
|
|
|
}
|
|
|
|
|
2024-01-15 21:06:05 +00:00
|
|
|
#[derive(PartialEq, Props, Clone)]
|
|
|
|
struct GenericChildProps<T: Display + PartialEq + Clone + 'static> {
|
2023-04-23 16:54:40 +00:00
|
|
|
data: T,
|
2022-11-16 04:58:56 +00:00
|
|
|
}
|
|
|
|
|
2024-01-15 21:06:05 +00:00
|
|
|
fn generic_child<T: Display + PartialEq + Clone>(props: GenericChildProps<T>) -> Element {
|
2024-01-16 19:18:46 +00:00
|
|
|
rsx! {
|
2024-01-15 22:40:56 +00:00
|
|
|
div { "{props.data}" }
|
2024-01-11 20:11:27 +00:00
|
|
|
}
|
2022-11-16 04:58:56 +00:00
|
|
|
}
|