Comment utiliser React Hook Form 7 avec le commutateur MUI
P粉231112437
P粉231112437 2023-09-16 19:43:09
0
1
611

Lors de l'utilisation de React-hook-form avec un commutateur MUI, le commutateur n'affiche pas la valeur initiale lors du chargement de la page même si la valeur est définie sur true. Cependant, cela semble être un problème d'affichage, car soumettre le formulaire sans toucher le bouton renvoie un true avec le commutateur défini comme vrai. De plus, cliquer une fois sur ces boutons (affichés comme faux) n'aura aucun effet (ils resteront toujours à gauche), et un deuxième clic les fera basculer à nouveau.

Utilisez le hook pour définir la valeur initiale (s'applique à tous les autres types de champs) :

useEffect(() => {
  if (userProfile) {
    setValue('firstname', userProfile.firstname);
    setValue('lastname', userProfile.lastname);
    setValue('show_profile', userProfile.show_profile || false);
  }
}, [userProfile]);

Le changement est mis en œuvre comme suit :

<FormControlLabel
    control={<Switch {...register('show_profile')} />}
    label="Profil öffentlich (beinhaltet Vor- und Nachname)"
/>

Il s'agit à son tour d'un composant de case à cocher entièrement fonctionnel :

<FormControlLabel
    control={
      <Checkbox
        {...register('steuerbescheinigung')}
        name="steuerbescheinigung"
      />
    }
    label="Steuerbescheinigung benötigt?"
  />

Comment utiliser react-hook-form dans le commutateur MUI et définir la valeur initiale ?

P粉231112437
P粉231112437

répondre à tous(1)
P粉933003350

Basé sur documentation.

Vous devez utiliser l'attribut react-hook-form中的Controller组件来包装您的Switch组件,并从字段对象传递valueonChange.

Par exemple :

<Controller
  name="show_profile"
  control={control}
  render={({ field: { onChange, value } }) => (
    <FormControlLabel
      control={<Switch checked={value} onChange={onChange} />}
      label="Profil öffentlich (beinhaltet Vor- und Nachname)"
    />
  )}
/>;

Vous pouvez voir l'exemple complet ici.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal