Skip to content

Commit 43e9347

Browse files
authored
Add render method to Component and auto implement Renderable (yewstack#563)
* Add render method to Component and auto implement Renderable * More cleanup * Rename Renderable method from view to render * Doc fixes * fix * Update CHANGELOG.md
1 parent 70a95f8 commit 43e9347

File tree

50 files changed

+249
-325
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+249
-325
lines changed

README.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Yew implements strict application state management based on message passing and
5656
`src/main.rs`
5757

5858
```rust
59-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
59+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
6060

6161
struct Model { }
6262

@@ -82,9 +82,7 @@ impl Component for Model {
8282
}
8383
}
8484
}
85-
}
8685

87-
impl Renderable<Model> for Model {
8886
fn view(&self) -> Html<Self> {
8987
html! {
9088
// Render your model here
@@ -322,7 +320,7 @@ extern crate chrono;
322320
use chrono::prelude::*;
323321

324322
impl Renderable<Model> for Model {
325-
fn view(&self) -> Html<Self> {
323+
fn render(&self) -> Html<Self> {
326324
html! {
327325
<p>{ Local::now() }</p>
328326
}

crates/macro/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
//! # fn update(&mut self, msg: Self::Message) -> ShouldRender {
2929
//! # unimplemented!()
3030
//! # }
31-
//! # }
3231
//! #
33-
//! # impl Renderable<Component> for Component {
3432
//! # fn view(&self) -> Html<Self> {
3533
//! #
3634
//! // ...

examples/counter/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
use stdweb::web::Date;
44
use yew::services::ConsoleService;
5-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
5+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
66

77
pub struct Model {
88
console: ConsoleService,
@@ -45,9 +45,7 @@ impl Component for Model {
4545
}
4646
true
4747
}
48-
}
4948

50-
impl Renderable<Model> for Model {
5149
fn view(&self) -> Html<Self> {
5250
html! {
5351
<div>

examples/crm/src/lib.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,13 @@ impl Component for Model {
143143
}
144144
true
145145
}
146-
}
147146

148-
impl Renderable<Model> for Model {
149147
fn view(&self) -> Html<Self> {
150148
match self.scene {
151149
Scene::ClientsList => html! {
152150
<div class="crm">
153151
<div class="clients">
154-
{ for self.database.clients.iter().map(Renderable::view) }
152+
{ for self.database.clients.iter().map(Renderable::render) }
155153
</div>
156154
<button onclick=|_| Msg::SwitchTo(Scene::NewClientForm(Client::empty()))>{ "Add New" }</button>
157155
<button onclick=|_| Msg::SwitchTo(Scene::Settings)>{ "Settings" }</button>
@@ -180,7 +178,7 @@ impl Renderable<Model> for Model {
180178
}
181179

182180
impl Renderable<Model> for Client {
183-
fn view(&self) -> Html<Model> {
181+
fn render(&self) -> Html<Model> {
184182
html! {
185183
<div class="client">
186184
<p>{ format!("First Name: {}", self.first_name) }</p>

examples/custom_components/src/barrier.rs

-2
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ impl Component for Barrier {
4848
self.onsignal = props.onsignal;
4949
true
5050
}
51-
}
5251

53-
impl Renderable<Barrier> for Barrier {
5452
fn view(&self) -> Html<Self> {
5553
html! {
5654
<div class="barrier">

examples/custom_components/src/button.rs

-2
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ impl Component for Button {
4141
self.onsignal = props.onsignal;
4242
true
4343
}
44-
}
4544

46-
impl Renderable<Button> for Button {
4745
fn view(&self) -> Html<Self> {
4846
html! {
4947
<button onclick=|_| Msg::Clicked>{ &self.title }</button>

examples/custom_components/src/counter.rs

-2
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ impl Component for Counter {
5858
self.onclick = props.onclick;
5959
true
6060
}
61-
}
6261

63-
impl Renderable<Counter> for Counter {
6462
fn view(&self) -> Html<Self> {
6563
let colorize = {
6664
match self.color {

examples/custom_components/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ impl Component for Model {
4343
Msg::ChildClicked(_value) => false,
4444
}
4545
}
46-
}
4746

48-
impl Renderable<Model> for Model {
4947
fn view(&self) -> Html<Self> {
5048
let counter = |x| {
5149
html! {

examples/dashboard/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use yew::format::{Json, Nothing, Toml};
66
use yew::services::fetch::{FetchService, FetchTask, Request, Response};
77
use yew::services::websocket::{WebSocketService, WebSocketStatus, WebSocketTask};
88
use yew::services::Task;
9-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
9+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
1010

1111
type AsBinary = bool;
1212

@@ -167,9 +167,7 @@ impl Component for Model {
167167
}
168168
true
169169
}
170-
}
171170

172-
impl Renderable<Model> for Model {
173171
fn view(&self) -> Html<Self> {
174172
html! {
175173
<div>

examples/file_upload/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![recursion_limit = "256"]
22

33
use yew::services::reader::{File, FileChunk, FileData, ReaderService, ReaderTask};
4-
use yew::{html, ChangeData, Component, ComponentLink, Html, Renderable, ShouldRender};
4+
use yew::{html, ChangeData, Component, ComponentLink, Html, ShouldRender};
55

66
pub struct Model {
77
link: ComponentLink<Model>,
@@ -64,9 +64,7 @@ impl Component for Model {
6464
}
6565
true
6666
}
67-
}
6867

69-
impl Renderable<Model> for Model {
7068
fn view(&self) -> Html<Self> {
7169
let flag = self.by_chunks;
7270
html! {

examples/fragments/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![recursion_limit = "128"]
22

3-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
3+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
44

55
pub struct Model {
66
counter: usize,
@@ -32,9 +32,7 @@ impl Component for Model {
3232
}
3333
true
3434
}
35-
}
3635

37-
impl Renderable<Model> for Model {
3836
fn view(&self) -> Html<Self> {
3937
html! {
4038
<>

examples/game_of_life/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use log::info;
44
use rand::Rng;
55
use std::time::Duration;
66
use yew::services::{IntervalService, Task};
7-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
7+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
88

99
#[derive(Clone, Copy, PartialEq)]
1010
enum LifeState {
@@ -205,9 +205,7 @@ impl Component for Model {
205205
}
206206
true
207207
}
208-
}
209208

210-
impl Renderable<Model> for Model {
211209
fn view(&self) -> Html<Self> {
212210
html! {
213211
<div>

examples/inner_html/src/lib.rs

+9-11
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,15 @@ extern crate stdweb;
55
use stdweb::unstable::TryFrom;
66
use stdweb::web::Node;
77
use yew::virtual_dom::VNode;
8-
use yew::{Component, ComponentLink, Html, Renderable, ShouldRender};
8+
use yew::{Component, ComponentLink, Html, ShouldRender};
9+
10+
const SVG: &str = r#"
11+
<h2>Inline SVG or <i>any</i> HTML:</h2>
12+
<svg height="250" width="500">
13+
<polygon points="220,10 300,210 170,250 123,234" style="fill:lime;stroke:purple;stroke-width:1" />
14+
Sorry, your browser does not support inline SVG.
15+
</svg>
16+
"#;
917

1018
pub struct Model {
1119
pub value: i64,
@@ -24,17 +32,7 @@ impl Component for Model {
2432
fn update(&mut self, _: Self::Message) -> ShouldRender {
2533
true
2634
}
27-
}
28-
29-
const SVG: &str = r#"
30-
<h2>Inline SVG or <i>any</i> HTML:</h2>
31-
<svg height="250" width="500">
32-
<polygon points="220,10 300,210 170,250 123,234" style="fill:lime;stroke:purple;stroke-width:1" />
33-
Sorry, your browser does not support inline SVG.
34-
</svg>
35-
"#;
3635

37-
impl Renderable<Model> for Model {
3836
fn view(&self) -> Html<Self> {
3937
let js_svg = js! {
4038
var div = document.createElement("div");

examples/js_callback/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ impl Component for Model {
5252
fn change(&mut self, _: Self::Properties) -> ShouldRender {
5353
false
5454
}
55-
}
5655

57-
impl Renderable<Model> for Model {
5856
fn view(&self) -> Html<Self> {
5957
html! {
6058
<div>

examples/large_table/src/lib.rs

+9-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! This demo originally created by https://github.com/qthree
22
//! Source: https://github.com/qthree/yew_table100x100_test
33
4-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
4+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
55

66
pub struct Model {
77
selected: Option<(u32, u32)>,
@@ -28,6 +28,14 @@ impl Component for Model {
2828
}
2929
true
3030
}
31+
32+
fn view(&self) -> Html<Self> {
33+
html! {
34+
<table>
35+
{ (0..99).map(|row| view_row(self.selected, row)).collect::<Html<Self>>() }
36+
</table>
37+
}
38+
}
3139
}
3240

3341
fn square_class(this: (u32, u32), selected: Option<(u32, u32)>) -> &'static str {
@@ -54,13 +62,3 @@ fn view_row(selected: Option<(u32, u32)>, row: u32) -> Html<Model> {
5462
</tr>
5563
}
5664
}
57-
58-
impl Renderable<Model> for Model {
59-
fn view(&self) -> Html<Self> {
60-
html! {
61-
<table>
62-
{ (0..99).map(|row| view_row(self.selected, row)).collect::<Html<Self>>() }
63-
</table>
64-
}
65-
}
66-
}

examples/minimal/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
1+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
22

33
pub struct Model {}
44

@@ -20,9 +20,7 @@ impl Component for Model {
2020
}
2121
true
2222
}
23-
}
2423

25-
impl Renderable<Model> for Model {
2624
fn view(&self) -> Html<Self> {
2725
html! {
2826
<div>

examples/mount_point/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
1+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
22

33
pub struct Model {
44
name: String,
@@ -26,9 +26,7 @@ impl Component for Model {
2626
}
2727
true
2828
}
29-
}
3029

31-
impl Renderable<Model> for Model {
3230
fn view(&self) -> Html<Self> {
3331
html! {
3432
<div>

examples/multi_thread/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ pub mod native_worker;
66

77
use log::info;
88
use yew::worker::*;
9-
use yew::{html, Component, ComponentLink, Html, Renderable, ShouldRender};
9+
use yew::{html, Component, ComponentLink, Html, ShouldRender};
1010

1111
pub struct Model {
1212
worker: Box<Bridge<native_worker::Worker>>,
@@ -65,9 +65,7 @@ impl Component for Model {
6565
}
6666
true
6767
}
68-
}
6968

70-
impl Renderable<Model> for Model {
7169
fn view(&self) -> Html<Self> {
7270
html! {
7371
<div>

examples/nested_list/src/header.rs

-2
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ impl Component for ListHeader {
3333
}
3434
false
3535
}
36-
}
3736

38-
impl Renderable<ListHeader> for ListHeader {
3937
fn view(&self) -> Html<Self> {
4038
html! {
4139
<div class="list-header" onmouseover=|_| Msg::Hover>

examples/nested_list/src/item.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ impl Component for ListItem {
3838
}
3939
false
4040
}
41-
}
4241

43-
impl Renderable<ListItem> for ListItem {
4442
fn view(&self) -> Html<Self> {
4543
html! {
4644
<div class="list-item" onmouseover=|_| Msg::Hover>
@@ -59,7 +57,7 @@ impl ListItem {
5957

6058
html! {
6159
<div class="list-item-details">
62-
{ self.props.children.view() }
60+
{ self.props.children.render() }
6361
</div>
6462
}
6563
}

examples/nested_list/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ impl Component for Model {
2222
fn update(&mut self, _: Self::Message) -> ShouldRender {
2323
true
2424
}
25-
}
2625

27-
impl Renderable<Model> for Model {
2826
fn view(&self) -> Html<Self> {
2927
html! {
3028
<div class="main">

examples/nested_list/src/list.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,7 @@ impl Component for List {
6868
}
6969
true
7070
}
71-
}
7271

73-
impl Renderable<List> for List {
7472
fn view(&self) -> Html<Self> {
7573
html! {
7674
<div
@@ -143,7 +141,7 @@ impl fmt::Display for Hovered {
143141

144142
impl<CHILD> From<VChild<CHILD, List>> for ListVariant
145143
where
146-
CHILD: Component + Renderable<CHILD>,
144+
CHILD: Component,
147145
CHILD::Properties: Into<Variants>,
148146
{
149147
fn from(vchild: VChild<CHILD, List>) -> Self {

0 commit comments

Comments
 (0)