类
类
结构 Classes 可用于处理 HTML 类。
将字符串推送到集合时,Classes 确保即使单个字符串可能包含多个类,每个类也只有一个元素。
还可以使用 Extend(即 classes1.extend(classes2))或 push()(即 classes1.push(classes2))合并 Classes。任何实现 Into<Classes> 的类型都可以推送到现有的 Classes 中。
宏 classes! 是一个方便的宏,用于创建单个 Classes。其输入接受逗号分隔的表达式列表。唯一的要求是每个表达式都实现 Into<Classes>。
- 文本
- 多个
- 字符串
- 可选
- 向量
- 数组
use yew::{classes, html};
html! {
<div class={classes!("container")}></div>
};
use yew::{classes, html};
html! {
<div class={classes!("class-1", "class-2")}></div>
};
use yew::{classes, html};
let my_classes = String::from("class-1 class-2");
html! {
<div class={classes!(my_classes)}></div>
};
use yew::{classes, html};
html! {
<div class={classes!(Some("class"))} />
};
use yew::{classes, html};
html! {
<div class={classes!(vec!["class-1", "class-2"])}></div>
};
use yew::{classes, html};
html! {
<div class={classes!(["class-1", "class-2"])}></div>
};
接受类的组件
use yew::prelude::*;
#[derive(PartialEq, Properties)]
struct Props {
#[prop_or_default]
class: Classes,
fill: bool,
children: Html,
}
#[function_component]
fn MyComponent(props: &Props) -> Html {
let Props {
class,
fill,
children,
} = props;
html! {
<div
class={classes!(
"my-container-class",
fill.then(|| Some("my-fill-class")),
class.clone(),
)}
>
{ children.clone() }
</div>
}
}