如何清除材料-ui自动完成字段中的文本?

dcs*_*san 11 reactjs material-ui

我有一个自动完成字段使用

        searchText = {this.state.searchText}
Run Code Online (Sandbox Code Playgroud)

像这样;

      <AutoComplete
        floatingLabelText='agent input'
        ref='agentInput'
        hintText="type response"
        multiLine = {true}
        fullWidth = {true}
        searchText = {this.state.searchText}
        onNewRequest={this.sendAgentInput}
        dataSource={this.agentCommands}
      />
Run Code Online (Sandbox Code Playgroud)

但是当我更新this.setState({searchText: null }) 它时,它将清除autoComplete一次,但不是第二次.

不确定这是一个错误还是有另一种方法来重置字段.

我也尝试寻找这个领域并添加一个ref但没有运气.

在这里提出以防它是一个错误 https://github.com/callemall/material-ui/issues/2615

小智 20

还尝试在每次输入更新时更改searchText:

onUpdateInput={this.handleUpdateInput}
Run Code Online (Sandbox Code Playgroud)

每当用户更改输入时,此函数应更改searchText:

handleUpdateInput(text) {
  this.setState({
    searchText: text
  })
}
Run Code Online (Sandbox Code Playgroud)

我的代码如下(ES6):

class MyComponent extends Component {
  constructor (props) {
    super(props)

    this.dataSource = ['a', 'b' ,'c']
    this.state = {
        searchText: ''
    }

  }

  handleUpdateInput (t) { this.setState({ searchText: t }) }

  handleSelect (t) { this.setState( { searchText: '' }) }

  render () {
    return <AutoComplete dataSource={this.dataSource}
                         searchText={this.state.searchText}
                         onNewRequest={this.handleSelect.bind(this)}
                         onUpdateInput={this.handleUpdateInput.bind(this)}
    />
  }      
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想清楚了输入时,用户按下输入或从列表中选择一些项目(所以我清楚SEARCHTEXThandleSelect),但我也会改变的状态SEARCHTEXT每个输入更新(handleUpdateInput).

我希望它对你有用!