Javascript 不正确的API调用
Javascript 不正确的API调用,javascript,reactjs,asynchronous,Javascript,Reactjs,Asynchronous,我有一个clientIfFromSearchWebitel状态,当组件第一次出现时,这个状态是未定义的,当组件再次更新时,会根据调用API的依据将值写入该状态,但API会被调用,而不是1次-2次,因为第一次状态是未定义的,第二次是值,这种情况怎么解决呢?我想你说的是 无论您在何处执行setClientIfFromSearchWebitel()替换为fetchNow.current=true 通过这种方式,您可以避免useState和useEffect中的条件。您想在此处修复什么?要修复它,请拨打
我有一个clientIfFromSearchWebitel状态,当组件第一次出现时,这个状态是未定义的,当组件再次更新时,会根据调用API的依据将值写入该状态,但API会被调用,而不是1次-2次,因为第一次状态是未定义的,第二次是值,这种情况怎么解决呢?我想你说的是 无论您在何处执行
setClientIfFromSearchWebitel()
替换为fetchNow.current=true
通过这种方式,您可以避免useState和useEffect中的条件。您想在此处修复什么?要修复它,请拨打一个电话,然后使用此选项拨打两个电话logic@HarishSoni由于未定义状态值,API再次调用。@DennisVash由于状态更改,API被调用两次。
const [clientIfFromSearchWebitel, setClientIfFromSearchWebitel] = useState(
undefined
);
useEffect(() => {
console.log('clientIfFromSearchWebitel', clientIfFromSearchWebitel);
if (clientIfFromSearchWebitel && clientIfFromSearchWebitel !== undefined && clientIfFromSearchWebitel !== '') {
axios
.post('https://extapi.megabank.ua/dev/ops/api/v1/getEntity/CASES', {
filters: [
{
comparison: 'eq',
fieldName: 'client_id',
fieldValue: clientIfFromSearchWebitel
? clientIfFromSearchWebitel
: undefined,
operation: 'OR',
},
],
})
.then(data => setFilterData(data.data));
}else {
axios
.post('https://extapi.megabank.ua/dev/ops/api/v1/getEntity/CASES', {
filters: [],
})
.then(data => setFilterData(data.data));
}
}, [clientIfFromSearchWebitel])
const fetchNow = useRef(false);
useEffect(() => {
if (fetchNow.current) {
// do fetch now -- your existing code
}
});