use yew::prelude::*; use log::info; use web_sys::{wasm_bindgen::{JsCast, UnwrapThrowExt}, HtmlInputElement}; #[function_component] fn App() -> Html { let rader: UseStateHandle> = use_state(Vec::new); let rader_handle = rader.clone(); let push_rad = move |rad| { info!("{}", rad); let handle = rader_handle.clone(); let mut val = (*handle).clone(); val.push(rad); rader_handle.set(val); }; html! {
} } #[derive(Properties, PartialEq)] struct InputProps { pub push_rad: Callback } #[function_component] fn Input(props: &InputProps) -> Html { let push_rad = props.push_rad.clone(); let onchange = move |event: Event| { let target: HtmlInputElement = event.target().unwrap_throw().dyn_into().unwrap_throw(); let value = target.value(); target.set_value(""); push_rad.emit(value); }; html! { } } #[derive(Properties, PartialEq)] struct TerminalProps { pub rader: Vec, } #[function_component] fn Terminal(props: &TerminalProps) -> Html { let rader: Vec<_> = props.rader.iter().map(|rad| html! { <> { rad }
} ).collect(); html! {
{ rader }
} } fn main() { wasm_logger::init(wasm_logger::Config::default()); yew::Renderer::::new().render(); }