Я пытаюсь отменить действие при изменении значения элемента Input.Это действие перехвачено сагой и сделан HTTP-запрос.Сначала я попытался сделать:
<Input
name='name'
value={this.props.finish.name}
placeholder='Ex: My application'
onChange={event => this.saveAppName(event.target.name, event.target.value)}
/>
private saveAppName = debounce((name: string, value: string) => {
if (value.length) {
this.props.dispatch(changeInputFinish({name, value}));
}
}, 500);
Решение, приведенное выше, сработало, но я не могу быстро набрать в поле ввода.Если я это сделаю, то Input не захватывает все.
После этого я попытался изменить метод "saveAppName" на:
private saveAppName = (name: string, value: string) => {
if (value.length) {
debounce(this.props.dispatch(changeInputFinish({name, value})), 500);
}
}
Приведенный выше код позволяет мне печатать что-либо кактак быстро, как я хочу внутри элемента Input, но в итоге получаю сообщение об ошибке и вырываю приложениеОтображается ошибка «Ошибка типа: ожидаемая функция».Это ошибка от lodash debounce.Он ожидает функцию, но действие «changeInputFinish ({name, value})» возвращает объект действия, а не функцию.
Чтобы попытаться решить эту проблему, я попытался заставить действие вернуть новую функциювместо объекта действия с кодом ниже:
private saveAppName = (name: string, value: string) => {
if (value.length) {
debounce(() => this.props.dispatch(changeInputFinish({name, value})), 500);
}
}
Приведенный выше код не извлекает никаких ошибок, но не позволяет мне что-либо вводить внутри ввода, тогда я не знаю, действительно ли эторешение.
Кто-нибудь знает, как я могу решить эту проблему?По сути, мне нужно отменить действие, которое захватывает сага, которая делает http-запросы.Должен ли я попытаться отыграться в моей саге, а не в компоненте, поскольку я пытаюсь улучшить производительность моих HTTP-запросов?
Спасибо.