我在输入字段中输入太快时,在浏览器中收到禁止错误 403 。我在后端使用 React Js与Node和Express 。
以下是我保存输入的代码。
import React, {Component, PropTypes} from 'react';
export default class SearchBox extends Component {
constructor(props) {
super(props);
this.state = {
name: "",
typing :false,
typingTimeOut :0,
};
this.changeName=this.changeName.bind(this);
this.sendtoParent=this.sendtoParent.bind(this);
}
changeName(event) {
const self=this;
if(self.state.typingTimeOut)
{
clearTimeout(typingTimeOut);
}
self.setState({
name: event.target.value,
typing:false,
typing: setTimeout(function(){
self.sendtoParent(self.state.name)},1000)
});
}
sendtoParent(){
this.props.searching(this.state.name,"true");
}
render() {
return (
<div >
<input
style={styles}
id="SearchBox"
type="text"
placeholder='Enter the name'
onChange={this.changeName}
/>
</div>
);
}
}
我的名字转到了Parent,后来我从 Github Search API给了我所需的json。当我正常输入时,我的代码工作正常,但它在打字快速时出现403错误。
答案 0 :(得分:1)
Github对每秒可发送的请求数量有限制。您试图在方法中引入超时以延迟发送请求,这是一种很好的方法,但实现它的方式却不起作用。
最简单的方法是将changeName函数修改为:
changeName(event) {
const self=this;
if(self.typingTimeOut)
{
clearTimeout(self.typingTimeOut);
}
self.typingTimeOut = setTimeout(function(){
self.sendtoParent(self.state.name)},1000);
self.setState({
name: event.target.value,
typing:false
});
}