我的组件有一个输入框,有时它会在用户输入输入时从 Api 获取数据,并使用输入值和响应触发回调。我的组件并不总是调用 API。它决定根据输入值调用 api。
问题是如果你输入的太快,回调会被错误的值触发。
(我使用 Saga 和 redux 来处理 api 请求)
function* myTask(
action
) {
try {
const response = yield call(myApiPromise,action.meta.value);
yield put(
myAction.makeSuccessAction(
response,
action.meta
)
);
} catch (e) {
yield put(myAction.makeErrorAction(e, action.meta));
}
}
function* mySaga() {
yield takeLatest(
myAction.type,
myTask
);
}
const myComponent = ({
callback,
dispatchApi,
apiResponse
}) => {
const [value, setValue] = useState("");
useEffect(() => {
if (apiResponse) {
callback(value, apiResponse);
}
}, [callback, apiResponse, value]);
const handleChange = (e) => {
setValue(e.target.value);
if (e.target.value.contains("0")) {
dispatchApi(e.target.value);
};
};
return ( <input value = {value} onChange = {handleChange} />);
}