我試圖利用本地javascript本地存儲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>
);
}
};
的問題是,該方法改變狀態()後5秒內成功執行,但隨後系統會根據你有多少點擊垃圾郵件在它再次執行。什麼是防止這種情況的方法?
你能設置一個模塊變量來跟蹤它是否被執行嗎?例如執行= false;只有在changeState處理程序中設置爲false時才執行代碼?當它被執行時,將其設置爲true,顯然。也許有更好的方法可以做到這一點。沒關係,看起來你收到的答案相當合理 –