Остановите запуск onIonChange при загрузке страницы

#javascript #reactjs #ionic-framework #axios #react-hooks

Вопрос:

Я использую ионную платформу React для своего проекта. Я устанавливаю состояния компонента ion-toggle в значение true в результате вызова Api. когда я это делаю, при перезагрузке страницы происходит ненужный обмен ионного переключателя, который уже установлен в значение true из состояния. Я искал ответы повсюду, и большинство из них касалось угловой ионной. Вот мой код ниже. Дайте мне знать, как я могу предотвратить это.

 import { IonToggle, IonItem, IonLabel } from '@ionic/react';
import { useEffect, useState } from 'react';
 import { apiUrl } from '../../utils/apiUrl';
import Cookies from 'universal-cookie';

const sample: React.FC = () => {

  const [covidDetails, setCovidDetails] = useState<{
    firstDose?: boolean,
    secondDose?: boolean
  }>({
    firstDose: false,
    secondDose: false
  });

  const getCovidVaccine = async () => {
    try {
      const response = (await axios.get(`${apiUrl()}/user/getCovidVaccineDetails/{userIdfromcookie}`, {
        headers: {
          Authorization: `Bearer ${cookies.get('token')}`
        }
      })).data;
      if (response.covidVaccine !== null) {
        setFirstLoad(true);
        setCovidDetails({
          firstDose: response.covidVaccine.firstDose,
          secondDose: response.covidVaccine.secondDose
        })
      }
    } catch (error) {
      console.log(error);
    }
  }

//this code fires on pageload if the checked for ion-toggle is true.
const setCovidVaccine = async (e) => {
    try {
      console.log("first", covidDetails);
      var details = { firstDose: covidDetails.firstDose, secondDose: covidDetails.secondDose };
      if (e.detail.value === "firstDose") {
        details.firstDose = e.detail.checked;
      }
      if (e.detail.value === "secondDose") {
        details.secondDose = e.detail.checked;
      }
      const response = (await axios.post(`${apiUrl()}/user/setCovidVaccineDetails/{userIdfromcookie}`, details, {
        headers: {
          Authorization: `Bearer ${cookies.get('token')}`
        }
      })).data;
      if (response.covidVaccine !== null) {
        setCovidDetails({
          firstDose: response.covidVaccine.firstDose,
          secondDose: response.covidVaccine.secondDose
        })
      }

    } catch (error) {
      console.log(error);
    }
  }

 useEffect(() => {
    getCovidVaccine();
  }, []);

return (
   <div>
      <IonItem>
        <IonLabel className={styles.vaccineLabel}>
          <p>1st Dose Vaccine</p>
        </IonLabel>
        <IonToggle
          color="primary"
          checked={covidDetails.firstDose}
          value="firstDose"
          onIonChange={e => setCovidVaccine(e)}
        />
      </IonItem>
      
      <IonItem>
        <IonLabel className={styles.vaccineLabel}>
          <p>2nd Dose Vaccine</p>
        </IonLabel>
        <IonToggle
          color="primary"
          checked={covidDetails.secondDose}
          value="secondDose"
          onIonChange={e => setCovidVaccine(e)}
        />
      </IonItem>
  </div>
);