javascript - 按下回车键时更新输入值的问题

标签 javascript reactjs material-ui

我正在基于 ReactJS 的应用程序中创建一个包含 Material Input 组件的组件,该组件允许用户输入单词,然后在按下 Enter 键时将其显示为同一输入组件中的芯片。

问题在于,写完第一个单词并按回车键后,会显示第一个筹码,但输入('')的更新状态被卡住,用户无法继续输入新单词。

如果有人知道如何处理此类问题,我将非常感激。

import React from 'react';
import PropTypes from 'prop-types';
import Textfield from 'components/Textfield';
import Input from 'material-ui/Input';
import Chip from 'components/Chip';

class ChipInput extends React.Component {

  constructor(props) {
    super(props);
    this.state = {
      valuesEntered: [],
      inputValue: undefined,
    };
  }

  handleChange = (ev) => {
    if (ev.key === 'Enter') {
      const elements = this.state.valuesEntered;
      elements.push(<Chip label={ev.target.value} onRequestDelete={() => {}} />);
      this.setState({
        valuesEntered: elements,
        inputValue: '',
      });
    }
  }

  render = () => (
    <Input
      name='chipInput'
      onKeyPress={this.handleChange}
      value={this.state.inputValue}
      startAdornment={
        <span style={{ display: 'inline-block !important' }}>
          {
            this.state.valuesEntered
          }
        </span>
      }
    />
  );
}

export default ChipInput;

ChipInput.propTypes = {
  defaultValues: PropTypes.array,
};

最佳答案

您应该阅读 Controlled Components 。在handleChange函数中,仅当按下回车键时才更新状态。在其他情况下,您也应该使用事件中的值更新 state.inputValue。

关于javascript - 按下回车键时更新输入值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091320/

相关文章:

javascript - 如何使用 Js for web 在滚动时从 firebase 数据库动态加载数据?

javascript - 如何防止相同的组件在导航时重新渲染? react 路由器 v6

reactjs - 如何从react-router中的url中删除哈希值

reactjs - 更改 Material UI 选项卡组件上的滚动按钮图标

javascript - React Native setState 根本不工作(功能组件),甚至不同步

javascript函数没有获取下拉文本

Javascript嵌套函数性能

javascript - 我想检查用户是否使用 firebase 登录

javascript - Material UI 中的嵌套按钮 : how to disable ripple effect of container button while clicking on a child button?

reactjs - Material -UI : How to properly set userAgent for server-side rendering