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

如何处理多输入可编辑

闾丘成礼
2023-03-14

我在react中的多个输入中添加了动态值,然后尝试对其进行编辑,但它根本不可编辑。代码如下:

class Hotels extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      data: [
        { id: 1, hotel: { name: "Sentido" } },
        { id: 2, hotel: { name: "Maris" } },
        { id: 3, hotel: { name: "Orka" } },
        { id: 4, hotel: { name: "Resort " } },
        { id: 5, hotel: { name: "Green " } },
        { id: 6, hotel: { name: "Maris" } },
        { id: 7, hotel: { name: "Nature " } },
        { id: 8, hotel: { name: "Diamond " } },
      ],
    };
  }

  render() {
    return data.map((item, i) => (
      <input
        name={`hotel__${i}.name`}
        onChange={this.handleChange}
        value={item.hotel.name}
        type="text"
      />
    ));
  }
  handleChange = (event) => {
    this.setState({
      [event.target.name]: event.target.value,
    });
  };
}
ReactDOM.render(<Hotels></Hotels>, document.getElementById("app"));

我没有使用defaultValue属性,并且添加了onChange事件,但它不起作用!

共有1个答案

姬银龙
2023-03-14

输入的名称不正确。您应该使用item.hotel.name

render() {
    return data.map((item, i) => (
      <input
        name={item.hotel.name}
        onChange={this.handleChange}
        value={item.hotel.name}
        type="text"
      />
    ));
  }

那么您的句柄更改应该是

handleChange = (event) => {
    this.setState({ data: this.state.data.map( item => {
        if (item.hotel.name === event.target.name) {
           return { ...item, hotel: { name: event.target.value }}
        } else {
           return item
        }
   }) })
  };

记得将this.handlechange=this.handlechange.bind(this)添加到构造函数中

 类似资料:
  • 问题内容: 我的一个朋友要我实现一个蓝色和红色指针来代表两只单独的鼠标的输入,以加快用于实时音频混合的混合台场景。我很乐意,但是尽管我认为这是个好主意,但我不知道从哪里开始寻找可能的解决方案。 我应该从哪里开始研究实现双鼠标输入的可行方法? 问题答案: 看一下jinput。 我已经使用了多个键盘,几乎可以肯定它也支持多个鼠标。

  • 问题内容: 这是我的小提琴 https://codepen.io/seunlanlege/pen/XjvgPJ?editors=0011 我有两个输入,并且我试图使用一种方法来处理任何输入字段的事件。 我已经在互联网上四处寻找解决方案,但一无所获。 我正在使用es6,请问该如何处理? 问题答案: 您尚未将属性传递给handeChange函数。像传递它一样,并且接收道具的顺序是错误的,属性将是第一个

  • 我正在开发一个应用程序(控制台),其中包含一个while循环,我希望允许用户暂停和恢复。经过一些研究,似乎一个额外的线程负责等待用户输入是正确的解决方案。 我已经能够实现持续等待输入的额外线程,并且还有一个kill方法,它设置flag变量来停止线程while()循环。不幸的是,除非有输入,否则while循环不会结束,只有在输入线程的while环至少完成一次后,这个kill标志才会生效。由于主线程也

  • 主要内容:重定向输出(Stdout和Stderr),抑制程序输出有三个键盘输入的通用“文件”,在屏幕上打印文本和在屏幕上打印错误。 标准输入文件(stdin)包含程序/脚本的输入。 标准输出(Standard Out)文件(stdout)被用来写输出以显示在屏幕上。 最后一种叫作的“标准错误”文件包含用于显示在屏幕上的任何错误消息。 这三个标准文件中的每一个(也称为标准流)分别使用数字,和进行引用。Stdin是文件,stdout是文件,stderr是文件。 重

  • 我一直在尝试从 kafka 流式传输我的 json 事件,将其展平,然后使用 Spring Cloud 流将其推送回另一个主题。 输入: 压平工艺: 仅产生: 我的问题是怎么让它变成这样 所以我可以像我所做的那样推回残缺的 JSONObject 而不是单个 JSONArray? 尽管如此,Spring Cloud Stream输出只是一个单独的事件,不适合我上面的案例,无法为Kafka生成3个事件

  • TextInput 是一个允许用户输入文本的基础组件。它有一个名为 onChangeText 的属性,次属性接受一个函数,而此函数会在文本变化时被调用。另外还有一个名为 onSubmitEditing 的属性,会在文本被提交后(用户按下软键盘上的提交键)调用。 胶乳我们要实现当用户输入时,将其以单词为单位翻译为另一种文字。我们假设这另一种文字是一堆有趣的东西:。 export default c