当用户停止输入ReactJS时显示警报

时间:2019-04-03 20:02:33

标签: javascript reactjs ecmascript-6 react-router

当用户停止在表单字段中输入内容时,我想在ReactJS中显示一条警告消息。

2 个答案:

答案 0 :(得分:4)

This可以为您提供帮助。

这类功能不是React特有的,因此您可以使用JS通过多种方式实现。

简单组件:

    class App extends Component {
      typingTimer = null;

     handleChange = (evt) => {
       const val = evt.target.value;
       clearTimeout(this.typingTimer);
       this.typingTimer = setTimeout(() => {
        if (val) {
          window.alert('Stopped typing !');
        }
       }, 500);
     }
     componentWillUnmount() {
       clearTimeout(this.typingTimer);
     }
      render() {
        return (
          <div>
            <input onChange={this.handleChange} /> 
          </div>
        );
      }
    }

答案 1 :(得分:0)

在这里,我创建了React功能组件供我使用。

const App = () => {
  let typingTimer = null;

  const makeAnApiCall =(inputValue) => {
        console.log("Making an Ajax Call");
        window.alert('Making an Ajax Call');
    }
  
  const handleChange = (evt) => {
    const val = evt.target.value;
    clearTimeout(typingTimer);
    typingTimer = setTimeout(() => {
      if (val) {
        makeAnApiCall(val)
      }
    }, 500);
  }

  useEffect(() => {
    return () => {
      clearTimeout(typingTimer);
    }
  }, [])

    return (
      <div>
        <input type="text" onChange={handleChange} /> 
      </div>
    );
}

stackblitz上的Workgin演示