Literals and Expressions

常量

如果一个表达式的类型本身实现了 Display (一个标准库中的 Trait),他们将会被转化成字符串并且作为一个 Text 节点插入 DOM 中。

所有的需要显示的文本必须被 {} 块包含,因为这些文本会被当做一个 Rust 表达式来处理。这一点上,Yew 中使用 HTML 的方式和正常 HTML 语法有巨大的区别。

1. let text = "lorem ipsum";
2. html!{
3. <>
4. <div>{text}</div>
5. <div>{"dolor sit"}</div>
6. <span>{42}</span>
7. </>
8. }

表达式

你可以在 HTML 中使用 {} 块来插入 Rust 表达式,只要这些表达式最终可以被解析成 Html

1. html! {
2. <div>
3. {
4. if show_link {
5. html! {
6. <a href="https://example.com">{"Link"}</a>
7. }
8. } else {
9. html! {}
10. }
11. }
12. </div>
13. }

通常我们会把这些表达式写进函数或者闭包中来增加可读性:

1. let show_link = true;
2. let maybe_display_link = move || -> Html {
3. if show_link {
4. html! {
5. <a href="https://example.com">{"Link"}</a>
6. }
7. } else {
8. html! {}
9. }
10. };

12. html! {
13. <div>{maybe_display_link()}</div>
14. }