Так что моя проблема, вероятно, распространена, но я не видел объяснения, как это сделать с помощью хуков / функциональных компонентов.
У меня есть контролируемый вход, к которому просто присоединено простое состояние , Когда эти входные данные изменяются, он имеет обработчик, который сначала обновляет упомянутое состояние, а затем отправляет состояние в хранилище. То, что я пытаюсь сделать, это немедленно обновить состояние (чтобы пользователь мог печатать без особых задержек при наборе), а затем ограничить отправку, чтобы она происходила только один раз каждые 300 мс, например, потому что указанная отправка является дорогой и является причиной задержка при наборе.
Итак, вот так:
const handleChange = (event) => {
const { value } = event.target;
setName(value);
dispatch(actions.editCheckpointPeriod({ id, name }));
};
.
.
.
<S.Input value={name} onChange={handleChange} />
, но пакет https://www.npmjs.com/package/throttle-debounce не работает, как я ожидал, когда я сделайте что-нибудь для этого:
const handleChange = (event) => {
const { value } = event.target;
setName(value);
throttle(300, false, () => {
dispatch(actions.nameAction({ id, value }));
});
};
В этом случае функция газа просто не срабатывает.