mirror of
https://github.com/yewstack/yew.git
synced 2026-02-01 17:26:28 +00:00
* Add render method to Component and auto implement Renderable * More cleanup * Rename Renderable method from view to render * Doc fixes * fix * Update CHANGELOG.md
63 lines
1.6 KiB
Rust
63 lines
1.6 KiB
Rust
#![recursion_limit = "128"]
|
|
|
|
use stdweb::web::Date;
|
|
use yew::services::ConsoleService;
|
|
use yew::{html, Component, ComponentLink, Html, ShouldRender};
|
|
|
|
pub struct Model {
|
|
console: ConsoleService,
|
|
value: i64,
|
|
}
|
|
|
|
pub enum Msg {
|
|
Increment,
|
|
Decrement,
|
|
Bulk(Vec<Msg>),
|
|
}
|
|
|
|
impl Component for Model {
|
|
type Message = Msg;
|
|
type Properties = ();
|
|
|
|
fn create(_: Self::Properties, _: ComponentLink<Self>) -> Self {
|
|
Model {
|
|
console: ConsoleService::new(),
|
|
value: 0,
|
|
}
|
|
}
|
|
|
|
fn update(&mut self, msg: Self::Message) -> ShouldRender {
|
|
match msg {
|
|
Msg::Increment => {
|
|
self.value = self.value + 1;
|
|
self.console.log("plus one");
|
|
}
|
|
Msg::Decrement => {
|
|
self.value = self.value - 1;
|
|
self.console.log("minus one");
|
|
}
|
|
Msg::Bulk(list) => {
|
|
for msg in list {
|
|
self.update(msg);
|
|
self.console.log("Bulk action");
|
|
}
|
|
}
|
|
}
|
|
true
|
|
}
|
|
|
|
fn view(&self) -> Html<Self> {
|
|
html! {
|
|
<div>
|
|
<nav class="menu">
|
|
<button onclick=|_| Msg::Increment>{ "Increment" }</button>
|
|
<button onclick=|_| Msg::Decrement>{ "Decrement" }</button>
|
|
<button onclick=|_| Msg::Bulk(vec![Msg::Increment, Msg::Increment])>{ "Increment Twice" }</button>
|
|
</nav>
|
|
<p>{ self.value }</p>
|
|
<p>{ Date::new().to_string() }</p>
|
|
</div>
|
|
}
|
|
}
|
|
}
|