首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yew错误- only允许一个根html元素

Yew错误- only允许一个根html元素
EN

Stack Overflow用户
提问于 2020-01-04 22:34:39
回答 2查看 369关注 0票数 1

我在Yew图书馆的组件机制上遇到了一个问题。如果我在宏中包含主模型的html宏的任何其他html代码,编译器会抱怨“只允许一个根html元素”。

我的结构如下:

main.rs

代码语言:javascript
复制
impl Component for Model {
    // ...

    fn view(&self) -> Html<Self> {
        html! {
            <Navigation />
            <p>{ "Hello World!" }</p>
        }
    }
}

components/navigation.rs

代码语言:javascript
复制
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>
        }
    }
}

我怀疑html宏在html标记周围添加了一个-tag或整个index.html,从而导致了"double“html标记。但是,如何避免这种情况,或者在使用组件时遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-05 03:24:38

编译器抱怨的是酵母html!宏必须有一个包含所有内容的元素。

因此,错误的修正是简单地添加一个包装器元素,如下所示:

main.rs

代码语言:javascript
复制
impl Component for Model {
    // ...

    fn view(&self) -> Html<Self> {
        html! {
            <div>
                <Navigation />
                <p>{ "Hello World!" }</p>
            </div>
        }
    }
}

它不必是div,它可以是任何html元素。

票数 2
EN

Stack Overflow用户

发布于 2020-01-13 15:47:15

正如前面提到的,您需要包装它。Yew支持JSX,您可以这样做:

代码语言:javascript
复制
impl Component for Model {
    // ...

    fn view(&self) -> Html<Self> {
        html! {
            <>
                <Navigation />
                <p>{ "Hello World!" }</p>
            </>
        }
    }
}

我更喜欢这种方式,因为它不会向呈现的文档添加任何额外的HTML。<div>最终可能会破坏现有的CSS或JS。但是,如果您编写了一个全新的组件,那么最好总是每个组件只有一个包装HTML元素(=使用div)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59595440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档