3 回答

TA貢獻1817條經驗 獲得超6個贊
您可以使用解決方法:
filterFeed = (value) => {//Pass the value, not the event
let searchString = value
let unfilteredFeed = this.unfilteredFeed;
let filteredFeed = unfilteredFeed.filter(el => el.title.toLowerCase().includes(value.toLowerCase()));
this.setState({
input: searchString,
feed: filteredFeed,
filter: true
})
}
還有你的 JSX:
<input className="basic-slide" id="name" type="text" value={this.state.input} placeholder="Event..." onChange={(e)=>{
const value = e.target.value;
this.debouncedFilterFeed(value)
}} /><label >Suche</label>

TA貢獻1799條經驗 獲得超8個贊
在嘗試了不同的事情之后,我找到了我的解決方案:
filterFeed= debounce((text) =>{
let searchString = text;
let unfilteredFeed: any = this.unfilteredFeed;
let filteredFeed: any = unfilteredFeed.filter(el => el.title.toLowerCase().includes(searchString.toLowerCase()));
this.setState({ input: searchString, feed: filteredFeed, filter: true })
}, 20)
<input className="basic-slide" id="name" type="text" value={this.state.input} placeholder="Event..." onChange={e => this.filterFeed(e.target.value)} /><label >Suche</label>

TA貢獻1831條經驗 獲得超10個贊
您需要將傳遞給 debounce 的整個函數(shù)包裝起來onChange并保存其引用:
filterFeed = (event: any) => {
// event.preventDefault()
event.persist();
let searchString = event.target.value;
let unfilteredFeed: any = this.unfilteredFeed;
let filteredFeed: any = unfilteredFeed.filter(el => el.title.toLowerCase().includes(event.target.value.toLowerCase()));
this.setState({
input: searchString,
feed: filteredFeed,
filter: true
})
}
debouncedFilterFeed = debounce(this.filterFeed, 300);
<input className="basic-slide" id="name" type="text" value={this.state.input} placeholder="Event..." onChange={this.debouncedFilterFeed} /><label >Suche</label>
- 3 回答
- 0 關注
- 144 瀏覽
添加回答
舉報