reactjs - 在 REACTjs 中选中复选框时如何隐藏段落?
问题描述
我是 REACT 的新手。我创建了一个包含几个组件的表单。在其中一个组件中,我有一个复选框和一个带有文本的段落。单击复选框时,我不知道如何隐藏段落。布尔值是在状态中捕获的,但不确定如何使用它来做我想做的事。
class Anonymous extends React.Component{
constructor(){
super();
this.state = {
anon:false
}
this.anonymousBox = this.anonymousBox.bind(this)
}
anonymousBox(event){
this.setState({anon:event.target.checked})
}
render(){
return(
<span>
<input type="checkbox"
name="anon" value=""
onChange={this.anonymousBox}
checked={this.state.anon}
/> Anonymous
<p style={{backgroundColor:'yellow'}}>
First Name: <br />
Last Name: <br />
Email: <br />
Country: <br />
Phone: <br />
</p>
</span>
)
}
}
解决方案
您可以根据状态有条件地呈现段落,如下所示:
{this.state.anon && <p style={{backgroundColor:'yellow'}}>
First Name: <br />
Last Name: <br />
Email: <br />
Country: <br />
Phone: <br />
</p>}
这与这种条件渲染风格类似(参见下面 Drew 的评论):
{this.state.someBoolean ? <p>Some text</p> : null}
即,如果满足条件而不是渲染这段 jsx,则不渲染任何内容。
另一种选择是使用display: none
属性切换 CSS 类。看起来像这样:
<p className={this.state.anon ? "show" : "hide"} style={{backgroundColor:'yellow'}}>
First Name: <br />
Last Name: <br />
Email: <br />
Country: <br />
Phone: <br />
</p>
当然,您需要相应的 CSS 类来完成这项工作。
您还可以在内联样式中使用三元条件:
<p style={{ backgroundColor:'yellow', display: this.state.anon ? 'block' : 'none' }}>
First Name: <br />
Last Name: <br />
Email: <br />
Country: <br />
Phone: <br />
</p>
在最后两个选项中,您可以替换display: none
为visibility: hidden
which行为不同。
您可以在 React 文档中阅读更多关于在 jsx 中使用三元运算符进行条件渲染的信息。
哪个选项更好取决于用例,所以这取决于你!
希望这会有所帮助,祝你好运!
推荐阅读
- c# - .NetCore 中的多线程 Kafka Consumer
- android - Flutter,Android 11,接近传感器库不起作用
- javascript - 我们如何从数组中删除重复项。删除顶级 javascript 的第一个对象
- javascript - 如何更改接口结构并重命名 VS Code 中的所有引用
- dictionary - 扫描图像上的符号识别(地图)
- reactjs - 您可能需要一个额外的加载器来处理这些加载器的结果。是由 OR 分配引起的
- javascript - 如何模糊 Paper.js 中的封闭路径元素?
- node.js - 需要在同一个请求中发送正文和文件nestjs swagger
- git - 同一个 GitHub 帐户的多个遥控器
- java - BorderPane 不显示除中心 Javafx 之外的其他窗格