我有一个输入使用 lodash debouncer 在文本输入字段上调用我的 api。但由于某种原因,它总是缺少最后一个输入值。
这是我的设置:
const debounceChanges = debounce(handler => {
handler();
}, 300);
const myComponent = () => {
const handleSaveText = async () => {
try {
await postPipelineItemUpdate(saveData);
fetchPipelineItems();
} catch (err) {
console.log(err);
}
};
const handleInput = (row, field, newValue, index) => {
const nextStep = row.nextStep ? row.nextStep : '';
setSaveData({ [field]: newValue});
debounceChanges(handleSaveText);
};
return(
<TextField
id="blockerNote"
value={saveData && saveData.id === row.id ? saveData.blocker_note : row[column.id]}
onChange={e => handleInput(row, column.id, e.target.value, index)}
InputProps={{ classes }}
multiline
/>
)
}
我的 debouncer 正在调用 api 处理程序,但我不明白为什么它不保存每个字符?我试图调整调用处理程序所需的时间,这是我能想到为什么它不起作用的唯一原因。