【问题标题】:I want my checked value from a list to store in array but it is not giving me the correct result我希望列表中的检查值存储在数组中,但它没有给我正确的结果
【发布时间】:2023-03-13 17:34:02
【问题描述】:

我无法在数组 selectedDepartment 中存储多个值,因为它会删除旧值并更新数组以获得最新值。

onClickHandler = (e, DeptId, DeptName) => {
  let selectedDepartment = [];
  selectedDepartment.push(DeptName);
  console.log("selectedDepartment----", selectedDepartment);
  this.setState({
    isChecked: !this.state.isChecked
  });
};

departmentData() {
let departmentList = this.props.departmentData.departments || [];
return departmentList.map((departmentName, index) => {
  return (
    <li className="row" key={index}>
      <div className="col-12 dep-list">
        <div className="row">
          <div className="col-md-9">
            <div
              className="user-name"
              title={departmentName.departmentName}
            >
              {departmentName.departmentName}
            </div>
          </div>
          <div className="col-md-3 mt-rd-btn">
             <RadioButton
                // checked={this.state.isChecked}
                id={departmentName.dObjectId}
                type="radio"
                name={departmentName.departmentName}
                value={departmentName.departmentName}
                onClick={e =>
                  this.onClickHandler(
                    e,
                    departmentName.dObjectId,
                    departmentName.departmentName
                  )
                }
              />
            </div>
          </div>
        </div>
     </li>
    );
  });
}

提前谢谢你。帮我解决这个问题

【问题讨论】:

  • 您忘记添加标签jsx
  • 我不认为这是强制性的。顺便谢谢

标签: javascript arrays jsx


【解决方案1】:

我没有全面检查代码,但是您的主函数onClickHandler 存在根本性的基本问题。

您正在为每个函数调用分配一个新的临时变量,并将所选对象推送到临时变量中。因此,基本上您每次都在创建一个新实例,并将选定的值放入该变量中。

您实际上需要做的是,获取变量中的旧值,然后推送选定的值。有点像..

onClickHandler(..., DeptName) {
     let currentList = this.departmentList;
     currentList.push(DeptName);
     this.departmentList = currentList;
}

应该可以解决你的问题

【讨论】:

  • 你能给我举个例子吗
  • 哪一部分你不明白@shubhamsaurabh?
  • 我知道了@Asheem
【解决方案2】:
 constructor(props) {
    super(props);
    this.state = {
      selectedDepartment: []
    };
  }

  onClickHandler = (e, DeptId, DeptName) => {
    let x = DeptName;
    let selectedDepartment =
      JSON.parse(JSON.stringify(this.state.selectedDepartment)) || [];
    if (selectedDepartment.indexOf(DeptName) === -1) {
      selectedDepartment.push(x);
    } else if (selectedDepartment.indexOf(DeptName) !== -1) {
      selectedDepartment.splice(selectedDepartment.indexOf(DeptName), 1);
    }
    console.log("data here in array----", selectedDepartment);
    this.setState({
      selectedDepartment
    });
  };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多