代码之家  ›  专栏  ›  技术社区  ›  Yugaprashanthan

如何在react中设置循环中的动态复选框的状态?

  •  0
  • Yugaprashanthan  · 技术社区  · 7 年前

    我正在循环加载复选框。我很难设置动态复选框的状态。

    我正在循环加载复选框。我需要设置复选框的状态以使其工作。当我设置状态时,每个复选框都会被选中,所以请给我一个解决方案

    const ChildComponent = props =>
      <div key={"comp" + props.number} className="relay-team-list">
          <div className="read-more">
              <a href="#">Team {props.number} - Click to Rename</a>
          </div>
          {
              props.members_arr.length > 0 ? (
                  props.members_arr.map((member, i) =>
                      member.position === props.number ? (
                          <div key={"members" + i} className="columns is-mobile list-item" id={"member" + props.number}>
                              <div className="column is-one-third">
                                  <img src={require('../images/user.png')} />
                              </div>
                              <div className="column txt-mid-grey relay-team-list-text">
                                  <p>{member.members_arr.member_name}</p>
                                  <p></p>
                                  <span className="check-icon"><input type="checkbox" value="checkedB"
                                      checked={this.state.enabledCheckBox + i}
                                      label={{ children: 'cardreader' + i }}
                                      onChange={this.passMemberID}
                                  /></span>
    
                              </div>
                          </div>
                      ) : ''
                  )
              ) : ''
          }
      </div>;
    

    passMemberID = () => {
      this.setState((prevState, props) => ({
        enabledCheckBox: !prevState.enabledCheckBox
      }), () => console.log(this.state.enabledCheckBox))
    }
    

    建造师

    constructor(props) {
      super(props);
      this.state = {
        enabledCheckBox: false,
      }
    }
    

    我需要有不同的状态,以每个复选框,所以我可以点击他们一个接一个现在都得到检查一次

    0 回复  |  直到 7 年前
        1
  •  2
  •   Biswajit Mahanta    7 年前

    建造商:

    constructor(props) {
      super(props);
      this.state = {
        checkBoxObj: {}
      };
    }
    

    组成部分:

    <input type="checkbox" 
         checked = {this.state.checkBoxObj[i] || false}
         onChange={() => this.passMemberID(i)}
    />
    

    功能:

    passMemberID = (i) => {
      this.setState({
        checkBoxObj: {
          ...this.state.checkBoxObj, ...{[i]: !this.state.checkBoxObj[i]}
        }
      })
    }