首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应ul和li元素“组件化”的最佳实践

响应ul和li元素“组件化”的最佳实践
EN

Stack Overflow用户
提问于 2020-05-11 03:36:39
回答 1查看 301关注 0票数 0

我正在学习反应,需要你的指导。我计划实现一个基于<ul>的菜单。

代码语言:javascript
复制
<ul>
  <li><a href="/link1">Menu One</a></li>
  <li><a href="/link2">Menu Two</a></li>
</ul>

我是否可以将上述列表转换为:

代码语言:javascript
复制
<MenuContainer>
    <MenuItem text="Menu One" target="/link1" />
    <MenuItem text="Menu Two" target="/link2" />
</MenuContainer>

我的主要问题是如何呈现<MainContainer>组件,因为我必须在开始(<ul>)和结束标记(</ul>)中包含它的所有子组件。

更新1

Header.js:

代码语言:javascript
复制
<MenuHeader target="EnterpriseMenuContainer" text="Enterprise" />
<MenuContainer id="EnterpriseMenuContainer">
    <MenuItemLink text="Company" target="/companies" />
    <MenuItemLink text="Site" target="/sites" />
</MenuContainer>

MenuHeader.js (只有render()):(这是工作的)

代码语言:javascript
复制
return (
  <li>
    <span onClick={this.handleMenuHeaderClick}>
      {this.props.text}
    </span>
  </li>
)

MenuItemLink.js (仅限render()):

代码语言:javascript
复制
return (
  <li><a href={this.props.target}>{this.props.text}</a></li>
)

我不知道怎么写MenuContainer

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-11 04:06:01

当您将组件呈现为

您实际上是将MenuItem's作为子级传递给MenuContainer。所以你可以把MenuContainer写成

代码语言:javascript
复制
const MenuContainer = ({children}) => {
   return <ul>{children}</ul>
}

和MenuItem作为

代码语言:javascript
复制
const MenuItem = ({ text, target}) => {
     return <li><a href={target}>{text}</a><li>
}

它会复制你的结构

代码语言:javascript
复制
<ul>
  <li><a href="/link1">Menu One</a></li>
  <li><a href="/link2">Menu Two</a></li>
</ul>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61721886

复制
相关文章

相似问题

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