当前位置: 首页 > 面试题库 >

如何使用React ES6处理多个受控输入?

叶英哲
2023-03-14
问题内容

这是我的小提琴

https://codepen.io/seunlanlege/pen/XjvgPJ?editors=0011

我有两个输入,并且我试图使用一种方法来处理onChange任何输入字段的事件。

我已经在互联网上四处寻找解决方案,但一无所获。

我正在使用es6,请问该如何处理?

class Form extends React.Component {
  `constructor(props) {
    super(props);
    this.state = {text:{
      e:'hi',
      c:''
    }};
    this.handleSubmit = this.handleSubmit.bind(this);
  }`

  `handleChange(event,property) {
    const text = this.state.text;
      text[property] = event.target.value;
      this.setState({text});
  }`

  `handleSubmit(event) {
    alert('Text field value is: ' + this.state.text.e);
  }`

  `render() {
    return (
      <div>
        <div>{this.state.text.e}</div>
        <input type="text"
          placeholder="Hello!"
          value={this.state.text.e}
          onChange={this.handleChange.bind(this)} />
        <input type="text"
          placeholder="Hello!"
          value={this.state.text.c}
          onChange={this.handleChange.bind(this)} />
        <button onClick={this.handleSubmit}>
          Submit
        </button>
      </div>
    );
  }
}`

ReactDOM.render(
  `<Form />`,
  document.getElementById('root')
);

问题答案:

您尚未将属性传递给handeChange函数。像传递它一样,this.handleChange.bind(this, 'e')并且接收道具的顺序是错误的,属性将是第一个参数,然后是事件,而不是相反。

码:

class Form extends React.Component {
  constructor(props) {
    super(props);
    this.state = {text:{
      e:'hi',
      c:''
    }};
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(property, event) {
    console.log(event.target.value);
    const text = {...this.state.text};
      text[property] = event.target.value;
      this.setState({ text }); //or you can use the shorthand here. ES6 is awesome <3
  }

  handleSubmit(event) {
    alert('Text field value is: ' + this.state.text.e);
  }

  render() {
    return (
      <div>
        <div>{this.state.text.e}</div>
        <div>{this.state.text.c}</div>
        <input type="text"
          placeholder="Hello!"
          value={this.state.text.e}
          onChange={this.handleChange.bind(this, 'e')} />
        <input type="text"
          placeholder="Hello!"
          value={this.state.text.c}
          onChange={this.handleChange.bind(this, 'c')} />
        <button onClick={this.handleSubmit}>
          Submit
        </button>
      </div>
    );
  }
}

ReactDOM.render(
  <Form />,
  document.getElementById('root')
);

密码笔



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

  • 问题内容: 在Python中,该模块可用于在一系列值上并行运行函数。例如,这将生成f的前100000个评估的列表。 当f接受多个输入而只有一个变量变化时,是否可以做类似的事情?例如,如何并行处理此: 问题答案: 有几种方法可以做到这一点。在问题给出的示例中,您可以定义一个包装函数 然后将此包装传递给。一种更通用的方法是使用一个包装器,该包装器使用一个元组参数并将该元组解包为多个参数 或使用等效的l

  • 我在react中的多个输入中添加了动态值,然后尝试对其进行编辑,但它根本不可编辑。代码如下: 我没有使用defaultValue属性,并且添加了onChange事件,但它不起作用!

  • 问题内容: 我无法理解与以下情况相关的这种基本机制。 我有一个spring网络应用程序。现在,我将模型自动连接到控制器中。基于url匹配,它将调用相应的方法。我所有的方法都是单例。 现在,当两个用户同时打开应用程序时,spring可以并行运行它们并为他们提供结果。我不明白它怎么做。我的意思是因为bean是单例的,所以必须等到不使用bean或覆盖bean中的数据。但是弹簧工作正常。有人可以用一些类比

  • 问题内容: 我需要更新或删除几个文档。 当我更新时,我这样做: 我首先搜索文档,为返回的结果设置更大的限制(比方说,大小:10000)。 对于每个返回的文档,我都会修改某些值。 我不喜欢对整个修改后的清单(批量索引)进行Elasticsearch。 该操作一直进行到点1不再返回结果为止。 当我删除时,我这样做: 我首先搜索文档,为返回结果设置更大的限制(例如,大小:10000) 我删除所有找到的发