【问题标题】:Setting values from radio buttons generated with map in react js在 react js 中使用 map 生成的单选按钮设置值
【发布时间】:2021-04-10 23:09:47
【问题描述】:

我正在尝试:

  1. 在 react 中使用 Map 从常量数组​​生成单选按钮
  2. 让用户选择一个并使用 handleChange() 设置状态

使用以下代码,我能够实现 1,但由于某种原因,当我尝试使用 handleChange() 显示时,我看到它是一个空字符串。

你能帮帮我吗?

谢谢

import React, { Component } from "react";

const members = ["Araki", "Ibata", "Fukutome", "Woods", "Alex", "Tatsunami"];

export default class MyRadio extends Component {
  constructor(props) {
    super(props);

    this.state = {
      lastName: "",
    };
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(e) {
    console.log("handleChange() e:" + e.target.value);

    this.setState({
      [e.target.name]: e.target.value,
    });
  }
 

  render() {
    console.log("render");
    return (
      <form>
        <div>
          {members.map((item) => (
            <React.Fragment>
              <label htmlFor={item.name}> {item}</label>
              <input
                name="lastName"
                key={item.name}
                id={item.name}
                value={item.name}
                type="radio"
                onChange={this.handleChange}
              />
            </React.Fragment>
          ))}
        </div>
        <div></div>
      </form>
    );
  }
}

【问题讨论】:

    标签: javascript reactjs user-interface radio-button


    【解决方案1】:

    要使这个可行的解决方案你必须改变成员如下

    const members = [{name: "Araki", name: "Ibata", ...}];
    

    array 应该是一个对象数组,每个对象都有 name 属性,因为在 ma​​p 你期望 name 应该是 item.name

    或者您必须在没有item.name 的情况下更改循环,您必须使用item

    {members.map((item) => (
        <React.Fragment>
              <label htmlFor={item}> {item}</label>
              <input
                name="lastName"
                key={item}
                id={item}
                value={item}
                type="radio"
                onChange={this.handleChange}
              />
        </React.Fragment>
    ))}
    

    【讨论】:

    • 尝试后我看到了这个警告:警告:列表中的每个孩子都应该有一个唯一的“关键”道具。这很奇怪,因为我设置了 key = {item}
    • 关键应该在 react.fragment 中
    猜你喜欢
    • 2021-03-07
    • 2018-03-31
    • 2021-12-19
    • 2019-08-01
    • 2013-07-24
    • 2016-01-14
    • 2017-05-25
    • 2014-05-12
    • 2021-09-01
    相关资源
    最近更新 更多