mos*_*ant 1 html components rust yew
我遇到了 Yew 库的组件机制的问题。如果我在主模型的 html 宏的宏中包含任何其他 html 代码,编译器会抱怨“只允许一个根 html 元素”。
我的结构如下:
主程序.rs
impl Component for Model {
// ...
fn view(&self) -> Html<Self> {
html! {
<Navigation />
<p>{ "Hello World!" }</p>
}
}
}
Run Code Online (Sandbox Code Playgroud)
组件/navigation.rs
impl Component for Navigation {
// ...
fn view(&self) -> Html<Self> {
html! {
<nav class=("uk-navbar-container","uk-padding","uk-padding-remove-bottom","uk-padding-remove-top"), uk-navbar="">
// ...
</nav>
}
}
}
Run Code Online (Sandbox Code Playgroud)
我怀疑 html 宏在 html 标签周围添加了 -tag 或整个 index.html,从而导致“双”html 标签。但是,我怎样才能避免这种情况,或者在使用组件时我错过了什么?
如前所述,您需要将其包裹起来。Yew支持JSX,你可以这样做:
impl Component for Model {
// ...
fn view(&self) -> Html<Self> {
html! {
<>
<Navigation />
<p>{ "Hello World!" }</p>
</>
}
}
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢这种方式,因为它不会向呈现的文档添加任何额外的 HTML。A<div>最终可能会破坏现有的 CSS 或 JS。但是,如果您编写一个全新的组件,每个组件始终只有一个包装 HTML 元素(=使用 div)也是一个好主意。
| 归档时间: |
|
| 查看次数: |
620 次 |
| 最近记录: |