如何使具有布尔值的状态属性显示在屏幕上(反应形式)

Collins_obi

我正在用React JS制作旅行表格。来自用户的输入之一是复选框,需要用户根据他们的饮食限制(例如,无素食,无犹太洁食,无乳糖)来选中这些复选框。选中相应的框后,如何使此属性显示在屏幕上。我很难做到这一点,因为react不会在具有布尔值的状态下显示属性。


class App extends React.Component{
  constructor(){
    super()
    this.state ={
      firstName: "",
      lastName: "",
      age: "",
      gender: "",
      destination: "",
      isVegan: false,
      isKosher: false,
      isLactoseFree: false
      
       }
    this.handleChange = this.handleChange.bind(this)
  }
 
  handleChange(event){
   const {name, value, type, checked}= event.target
   type === "checkbox" ? 
   this.setState({[name]:checked}) : 
   this.setState({[name]:value})
   
 }

  
  render(){
    return(
       <main>
      <form> 
       
        <input
          value = {this.state.firstName}
          type= "text" 
          name="firstName"  
          placeholder= "First Name"                   
          onChange= {this.handleChange}/> 
     
     <input 
        value = {this.state.lastName}
        type= "text" 
        name="lastName"  
        placeholder= "Last Name" 
        onChange= {this.handleChange}
     />
     <br/>
        
     <input 
       value = {this.state.age}
       type= "number"
       name = "age"
       placeholder = "Age"
       onChange = {this.handleChange}
      />   
      <br />
        <label>
          
          <input
          value= "Male"
          name = "gender"
          type = "radio"
          checked = {this.state.gender === "Male"}
          onChange ={this.handleChange}
          
          />Male
           
          
          </label>
       <br />
        <label>
        <input
          value= "Female"
          name = "gender"
          type = "radio"
          checked = {this.state.gender === "Female"}
          onChange ={this.handleChange}
          
          />Female
        </label>
        
        <br />
        
        <select
          value = {this.state.destination}
          name = "destination"
          onChange = {this.handleChange}
          
          > 
          <option value = "">-- Please choose a destination --</option>
          <option value = "germany">Germany </option>
          <option value = "italy"> Italy</option>
          <option value = "spain"> Spain </option>
          <option value = "norway"> Norway </option>
        
         </select>
        <br />
        <label> 
          <input 
            type = "checkbox"
            name = "isVegan"
            onChange = {this.handleChange}
            checked = {this.state.isVegan}
           /> Vegan
         </label>
        
        <br />
        
         <label> 
          <input 
            type = "checkbox"
            name = "isKosher"
            onChange = {this.handleChange}
            checked = {this.state.isKosher}
           /> Kosher
         </label>
        
        <br />
        
         <label> 
          <input 
            type = "checkbox"
            name = "isLactoseFree"
            onChange = {this.handleChange}
            checked = {this.state.isLactoseFree}
           /> Lactose free
         </label>
        <br />
        <button> Submit </button>
      </form>
    <hr/>
        
        <h1> Passenger's Info </h1>
        <p>  Name : {this.state.firstName} {this.state.lastName} </p>
        <p>  Age : {this.state.age} </p>
        <p>  Gender : {this.state.gender} </p>
        <p>  Travel Destination : {this.state.destination} </p>
        <p> Dietary Restrictions : </p>
        
    </main>
    
    )
  }
}


德鲁·里斯(Drew Reese)

您可以使用条件渲染,例如

{this.state.isVegan ? "Yes" : "No"}

或将布尔值转换为可呈现内容的任何其他形式,类似于以下内容,它通过状态中启用的内容过滤限制数据并将文本显示为逗号分隔的列表。

const dietaryRestrictions = [
  {
    id: 'isVegan',
    text: 'Vegan',
  },
  {
    id: 'isKosher',
    text: 'Kosher',
  },
  {
    id: 'isLactoseFree',
    text: 'Lactose Free',
  },
];

...

<p>
  Dietary Restrictions:{" "}
  {dietaryRestrictions
    .filter(({ id }) => this.state[id])
    .map(({ text }) => text)
    .join(", ")}
</p>

编辑如何使状态属性显示在屏幕上的布尔值

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

html-具有布尔值的属性

使用Powershell更新具有布尔值的xml属性

在gatsby中显示具有布尔值的组件

如何告诉TypeScript我的属性可以是布尔值还是具有特定签名的函数?

我只希望 div 根据布尔值显示在屏幕上

如何使<Ion-select>在具有反应形式的表格加载中显示默认值

如何搜索jQuery数据表中以字符串形式显示的布尔值?

反序列化具有nullable属性的布尔值?

如何根据布尔值更改屏幕上的小部件?

布尔值作为原语和布尔值作为对象的属性有什么区别?

如何从未知形式获取布尔值?

如何将布尔值传递给具有变量名的方法

如何根据布尔值保存具有不同扩展名的文件

Vaadin-如何将具有布尔值的Grid列转换为Checkbox

如何在Python中具有布尔值的列表中打印字典?

如何在 Android 中使用带有 if-else 语句的布尔值显示我的 TextView?

快速显示布尔值

p:SelectBooleanCheckbox:当布尔值的状态取决于两个实体的状态时,如何推导布尔值?

具有布尔值或哈希集的哈希图

条件必须具有静态类型的布尔值

从具有布尔值的数据框中删除行

PHP:具有布尔值的关联数组

评估具有多个布尔值的表达式

具有非布尔值的MVC CheckBoxList模型绑定

PHP中具有布尔值的数学运算

在elasticsearch中具有匹配查询的嵌套布尔值

具有多个布尔值的 Angular 5 BehaviorSubject

isNaN和NaN是否具有布尔值

删除具有绑定布尔值的列表项-SwiftUI