小能豆

React - 表单提交后清除输入值

javascript

我遇到了一个相当愚蠢的问题。我正在创建我的第一个 React 应用程序,遇到了一个小问题,提交表单后,我无法清除输入值。我尝试在 Google 上搜索这个问题,在这里找到了一些类似的帖子,但我无法解决这个问题。我不想更改组件/应用程序的状态,只是想将输入的值更改为空字符串。我尝试在函数中清除输入的值onHandleSubmit(),但出现错误:

“无法设置未定义的属性‘值’”。

我的 SearchBar 组件:

import React, { Component } from "react";

class SearchBar extends Component {
  constructor(props) {
    super(props);

    this.state = {
      city: ""
    };

    this.onHandleChange = this.onHandleChange.bind(this);
    this.onHandleSubmit = this.onHandleSubmit.bind(this);
  }

  render() {
    return (
      <form>
        <input
          id="mainInput"
          onChange={this.onHandleChange}
          placeholder="Get current weather..."
          value={this.state.city}
          type="text"
        />
        <button onClick={this.onHandleSubmit} type="submit">
          Search!
        </button>
      </form>
    );
  }

  onHandleChange(e) {
    this.setState({
      city: e.target.value
    });
  }

  onHandleSubmit(e) {
    e.preventDefault();
    const city = this.state.city;
    this.props.onSearchTermChange(city);
    this.mainInput.value = "";
  }
}

export default SearchBar;

阅读 55

收藏
2024-06-08

共1个答案

小能豆

您有一个受控组件,其input值由 决定this.state.city。因此,一旦提交,您必须清除状态,这将自动清除您的输入。

onHandleSubmit(e) {
    e.preventDefault();
    const city = this.state.city;
    this.props.onSearchTermChange(city);
    this.setState({
      city: ''
    });
}
2024-06-08