Leading = true в debounce не работает должным образом - PullRequest
0 голосов
/ 25 сентября 2018

Используя lodash debounce(), я жду 10 секунд, прежде чем установить условие поиска в состоянии моего приложения.Но я хочу установить searching в состоянии моего приложения до того, как я откажусь:

onChangeText(text) {
    setSearching(true);
    setSearchTerm(text);
}
render(){
    return(
        <TextInput style={s.input}
            onChangeText={_.debounce(this.onChangeText, 10000, {'leading':true} )}
        />
    )
}

Из документов это должно выполняться на переднем крае тайм-аута, а не дособытия останавливаются на выделенное время ожидания. Реальное поведение таково, как будто вообще нет debounce, события запускаются каждый раз, когда они вызываются без 10-секундного буфера.Любые идеи? Удаление {'leading':true} делает отладку соответствующим образом, но мне нужно установить состояние в моем приложении до 10 секунд.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Посмотрите, поможет ли этот подход:

debouncedSetSearchTerm = _.debounce(text => setSearchTerm(text), 10000)

onChangeText(text) {
    setSearching(true);
    debouncedSetSearchTerm(text);
}
render() {
    return(
        <TextInput style={s.input} onChangeText={onChangeText} />
    )
}

Сначала вы наберете setSearching, а затем вызовите debouncedFn, который затем обработает searchTerm после задержки 10000.

0 голосов
/ 25 сентября 2018

Вы можете указать ведущий true в своем пользовательском случае.

debounce(func, [wait=0], [options={ leading: true}])

Пожалуйста, прочтите документ по ссылке https://lodash.com/docs#debounce

...