我正在尝试使用 react/redux 去抖动 textarea 值并在其中显示去抖动值,div#preview但在第一次函数调用后我收到合成事件警告。
我有用于处理按预期工作的 textarea 值状态的 reducer,但为简单起见,我在此代码段中编写了本地状态。
如果除了debounce避免在每次之后重新渲染之外还有更好的方法,keypress我很想知道。提前致谢。
class TextArea extends React.Component {
constructor(props){
super(props);
this.state = {foo: ''}
}
handleInputChange = _.debounce((e) => {
e.persist();
let value = e.target.value;
this.setState({foo: value});
}, 300);
render() {
return (
<div>
<textarea onChange={(e)=>this.handleInputChange(e)} value={this.state.foo}></textarea>
<p id="preview">{this.state.foo}</p>
</div>
);
}
}
ReactDOM.render(
<TextArea />,
document.getElementById("react")
);
<div id="react"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>