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
  }
});