React native - в React Hook useEffect отсутствует зависимость: «getAllPost». Либо включите его, либо удалите массив зависимостей. ", - PullRequest
0 голосов
/ 24 марта 2020

Я новичок в реакции native и пытаюсь вызвать два API из useEffect, но каждый раз выдает эту ошибку React Hook useEffect has a missing dependency: 'getAllPost'. Either include it or remove the dependency array.

Вот мой код

export default function Home({navigation}) {
  const [arrCat, setArrCat] = useState([]);
  const [arrPost, setArrPost] = useState([]);
  const [isLoading, setLoding] = useState(false);

  function getAllCategory() {
    setLoding(true);
    let apiResponse = ApiManager.GET('category/all', [], 'GET');
    apiResponse
      .then(response => {
        let responseJson = response[1];
        let status = response[0];
        setLoding(false);
        let message =
          responseJson.message != null
            ? response.message
            : 'Something went wrong';
        if (status === 200) {
          setArrCat([...responseJson.data]);
          getAllPost();
        }
        setTimeout(function() {
          if (message != null) {
            Toast.showWithGravity(message, Toast.LONG, Toast.BOTTOM);
          }
        }, 120);
      })
      .catch(error => {
        console.error(error);
        Toast.showWithGravity(error, Toast.LONG, Toast.BOTTOM);
        setTimeout(function() {
          setLoding(false);
        }, 60);
      });
  }
  function getAllPost() {
    GetLocation.getCurrentPosition({
      enableHighAccuracy: true,
      timeout: 15000,
    })
      .then(location => {
        console.log(location);
        const dictData = {
          lat: '-37.81400200-33.865143', //location.latitude,
          lang: '144.9546943', //location.longitude,
          record_count: '0',
        };
        console.log(dictData);
        let apiResponse = ApiManager.POST(
          'post/getRecommendedPost',
          dictData,
          'POST',
        );
        apiResponse
          .then(response => {
            let responseJson = response[1];
            let status = response[0];
            if (status === 200) {
              console.log(responseJson);
              setArrPost(oldValue => [...oldValue, ...responseJson.data]);
              console.log(arrPost);
            } else {
              // console.error(responseJson);
              Toast.showWithGravity(
                responseJson.message,
                Toast.LONG,
                Toast.BOTTOM,
              );
            }
          })
          .catch(error => {
            // console.error(error);
            Toast.showWithGravity(error.message, Toast.LONG, Toast.BOTTOM);
            // setTimeout(function() {
            //   setLoding(false);
            // }, 60);
          });
      })
      .catch(error => {
        // const {code, message} = error;
        // console.warn(code, message);
        Toast.showWithGravity(error.message, Toast.LONG, Toast.BOTTOM);
      });
  }

  useEffect(() => {
    console.log('Home screen mounted');
    getAllCategory();
    // getAllPost();
  }, []);

  return ( ....)
}
...