我有navbar可重用组件,其中包含徽标,和公司名称,现在我想隐藏公司名称在我的组件之一,我将使用这个navbar,我如何做到这一点?
注意:我使用的是功能组件
这是导航栏
<nav className="navbar">
<div className="container">
<span className="navbar-brand">
logo
</span>
<ul showName={true} className="nav navbar-nav">
<li className="nav-item ">
<a className="nav-link" href="#">Company name</a>
</li>
</ul>
</>}
</div>
</nav>
这是我的另一个组件,我使用navbar,我想隐藏公司名称
<Navbar showName={false}/>
但这不起作用,我得到以下错误
警告:React无法识别DOM元素上的showname
属性。 如果您有意希望它作为自定义属性出现在DOM中,请将其拼写为小写的showname
。 如果您意外地从父组件传递了它,请将它从DOM元素中删除。
我需要做什么改变才能使它工作?
你应该使用我们所说的条件渲染,至少有5种方法,其中一种是:
像以前那样调用导航栏
<Navbar showName={false}/>
然后在组件中使用这些道具,如下所示:
<nav className="navbar">
<div className="container">
<span className="navbar-brand">
logo
</span>
{
props.showName &&
<ul className="nav navbar-nav">
<li className="nav-item ">
<a className="nav-link" href="#">Company name</a>
</li>
</ul>
}
</div>
</nav>
这里有一篇介绍其他方法的文章:(即使在这个用法中,这可能是最好的。。。)https://blog.bitsrc.io/5-ways-to-implement-conditional-rendering-in-react-64730323b434
你在这里犯了错误,
<ul showName={true} className="nav navbar-nav">
在这里,showname={true}
直接在DOM中添加。 它没有反应成分。 因此,对你犯的错误作出反应(你就是这样)
您可能希望像这样直接添加额外的css类/样式,
<ul className={`nav navbar-nav ${ showName ? 'hide-it' : '' }`}>
<ul style={{ display: 'none' }} className="nav navbar-nav">