当前位置: 首页 > 知识库问答 >
问题:

如何在ReactJS中使用两个不同的状态变量获取数据?

柯星辰
2023-03-14

我制作了4个单选按钮和一个选项输入框:其他单选按钮(见屏幕截图)。当我选中其他单选按钮并在输入框中输入值时,this.state.gender变为-1this.state.gendertext等于输入框中输入的文本。所以我想做this.state.gender=this.state.gendertext当且仅当选中了其他单选按钮,否则this.state.gendertext等于单选按钮选项值和this.state.gendertext='

注意:-1用作最后一个单选按钮选项的标识符。

contactform.js

import React, { Component } from 'react';

class ContactForm extends Component {
  constructor(props){
    super(props);
    this.state = {
        gender:'',
      gendertext:''

    };
  }

setGender(checkedValue){
    console.log(checkedValue);
    this.setState({
        gender:checkedValue
    })
  }

  onChangeTextBoxGender(event){
  this.setState({gendertext: event.target.value})
  }

savedata(age, gender, health, name, email, info, fitness){
        let newcontent = contentref.push();

      if(this.state.gender === -1){
        this.setState({
          gender:this.state.gendertext
        })
      }

        newcontent.set({

            gender:this.state.gender,
        gendertext:this.state.gendertext

        });
  }
 render() {

    return (
      <div>

        <div id="center">
          <form>
<div id="gender">
              <div className="form-group">
                <div className="col-sm-offset-2 col-sm-10">
                  <h4>What is your gender?</h4>  
                </div>
              </div>

              <div className="form-group">
                <div className="col-sm-offset-2 col-sm-10">
                  <div className="radio">
                    <label><input type="radio" name="gender" checked={(this.state.gender === 'Female')} onChange={this.setGender.bind(this,'Female')}/> Female</label>
                  </div>
                </div>
              </div>
              <div className="form-group">
                <div className="col-sm-offset-2 col-sm-10">
                  <div className="radio">
                    <label><input type="radio" name="gender" checked={(this.state.gender === 'Male')} onChange={this.setGender.bind(this,'Male')}/> Male</label>
                  </div>
                </div>
              </div>
              <div className="form-group">
                <div className="col-sm-offset-2 col-sm-10">
                  <div className="radio">
                    <label><input type="radio" name="gender" checked={(this.state.gender === 'Prefer not to say')} onChange={this.setGender.bind(this,'Prefer not to say')}/> Prefer not to say</label>
                  </div>
                </div>
              </div>

              <div className="form-group">
                <div className="col-sm-offset-2 col-sm-10">
                  <div className="radio">
                    <label><input type="radio" name="gender" checked={(this.state.gender === -1)} onChange={this.setGender.bind(this,-1)}/>Other</label>
                    <input type="text" class="form-inline" id="other1" value={this.state.gendertext} onChange={this.onChangeTextBoxGender.bind(this)}/>
                  </div>
                </div>
              </div>
            </div>
 </form>
        </div>

      </div>
    );
  }
}

export default ContactForm;

截图:这里

共有1个答案

郤飞英
2023-03-14
  onChangeTextBoxGender(event){
    const txt=event.target.value;
    this.setState({
      gendertext: txt,
        gender: txt
    })
  }

  setGender(checkedValue){
    console.log(checkedValue);
    this.setState({
      gender:checkedValue,
      gendertext:''
    })
  }

并更改以下行:

 类似资料:
  • 我刚开始检查react表单。我遇到了一个问题,react在渲染中标记了我试图填充输入框标签的行。以下是我的应用程序代码: 在这一点上,我所要做的就是用名称输入框的标签为“您的名字”来呈现表单,如果没有输入名称,则让react用名称输入框的标签为“您需要输入您的名字”来重新呈现表单。 非常感谢任何援助。

  • 我正在使用ReactJS、Typescript和Firebase构建一个web应用程序,其中一个用户将能够监视与另一个用户的UI的更改和交互。两个用户可以同时看到相同的视图,并显示一些图像。例如,User1单击的任何图像都会更改其边框,这应该反映在User2的UI中。单独使用DOM、typescript和firebase是可行的,但是使用ReactJS我面临很多困难。 第一个问题:是否可以在不使用

  • 我正在处理这个FreeCodeCamp排行榜表,当单击突出显示的表头时,应用程序调用这个url https://fcctop100.herokuapp.com/api/fccusers/top/recent,或者这个https://fcctop100.herokuapp.com/api/fccusers/top/alltime,从而在过去30天或所有时间中得分最高的露营者之间进行排序。 我在这里的

  • 我试图确定查询中的“完整”或“不完整”值,但我需要引用两个不同的列来确定。 例如-我有一个货件有4个事件。在数据库中,我有以下列。 “cs_event_count”与“cs_completed” Event count告诉我事件总数,Completed告诉我这些事件中有多少已经完成。 我希望我的查询显示如下内容 如果“Event Count”值等于“Completed”值,则为“Complete”

  • 我正试图成为一个动觉消费者客户。为了解决这个问题,我阅读了《Kinesis开发人员指南》和AWS文档http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-implementation-app-java.html. 我想知道是否有可能从两个不同的流中获取数据并进行相应的处理。 假设我有两个不同的流,分别是流1和流

  • 我正在使用go-redis/redis和go-redis/cache来缓存Go对象。 其中obj是一个具有go映射(键值对)的结构,通过使用上面的代码,我正在设置一个键并将值保存到其中。这是package Common。现在我想在不同的包中访问它,比如GetRedis_pkg,而不导入pkg。我有什么办法可以做到。并且我可以通过任何方式访问该结构内部的特定映射吗?使用redis key imort