입력 필드를 사용하여 기본 javascript localstorage api (또는 npm의 모든 로컬 로컬 저장 모듈)를 사용하여 로컬 저장소에 저장하려고하지만 마지막으로 입력 한 문자에서 최소 5 초 간격으로 로컬 저장소에 저장하는 코드를 구현하는 데 약간의 문제가 있습니다.이벤트 누적없이 일정 시간 만 클릭하면 실행
import React, { Component } from 'react';
import throttle from 'lodash/throttle';
class Something extends Component {
state = { inputValue: "" };
handleChange =() => {
this.changeState();
}
changeState = throttle(
newValue => {
this.setState({ inputValue: newValue });
console.log('executed!');
},
5000
);
render() {
return (
<div>
<input type="text"
value={this.state.inputValue}
placeholder="Type something here"
onChange={this.handleChange}
/>
</div>
);
}
};
문제는 방법 changeState()가 성공적으로 오초 후에 실행하지만 그것은 당신이 그것을 스팸 얼마나 많은 클릭을 기반으로 한 번에 다시 실행됩니다 있다는 것입니다. 저것을 막는 방법은 무엇입니까?
실행 여부를 추적하는 모듈 변수를 설정할 수 있습니까? 예 : 실행 = false; false로 설정된 경우 changeState 핸들러의 코드 만 실행합니까? 분명히 실행되면 true로 설정하십시오. 어쩌면 더 좋은 방법으로 네이티브 반응을 보일 수 있습니다. 전혀 신경 쓰지 않고받은 답변이 상당히 합리적입니다. –