【问题标题】:How to hide paragraph when checkbox is checked in REACTjs?在 REACTjs 中选中复选框时如何隐藏段落?
【发布时间】:2020-08-30 17:08:46
【问题描述】:

我是 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>
  )
 }
}

codepen

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    您可以像这样根据状态有条件地渲染段落:

    {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 其中behaves differently

    您可以在conditional rendering 的 React 文档中阅读有关在 jsx 中使用三元运算符的更多信息。

    哪个选项更好取决于用例,所以这取决于你!

    希望这会有所帮助,祝你好运!

    【讨论】:

    • 仅供参考 condition &amp;&amp; Component 不等于 condition ? Component : null。考虑一下dataArray.length &amp;&amp; Component:如果数据数组为空且长度为 0(假),那么长度 0 将输出到渲染结果,而使用三元组将正确返回 null。
    • 试试这个沙盒:codesandbox.io/embed/…
    • 我理解除了condition &amp;&amp; Component之外的答案。组件是否被视为布尔值?
    • Component 这里指的是 React 组件或任何其他 HTML 元素。三元组是计算为布尔值的表达式。所以Component 有一个真值(有点像非空字符串或非零数字),如果条件是true 而不是Component 被渲染,因为整个表达式的计算结果为true。如果条件为false,则整个表达式的计算结果为false,并且不会呈现组件。可以把它想象成true &amp;&amp; true === true 表示渲染,false &amp;&amp; true === false 表示不渲染。
    猜你喜欢
    • 2020-12-28
    • 2011-09-06
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2016-03-13
    • 2013-08-01
    相关资源
    最近更新 更多