recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment ajouter dynamiquement des propriétés basées sur les conditions dans les composants React ?

<p>Existe-t-il un moyen d'ajouter des propriétés à un composant React uniquement lorsque certaines conditions sont remplies ? </p> <p>Je dois ajouter les attributs obligatoires et readOnly à l'élément de formulaire en fonction des conditions de l'appel Ajax post-rendu, mais je ne sais pas comment résoudre ce problème car <code>readOnly="false"< /code> est complètement différent de l'omission d'attributs. </p> <p>L'exemple ci-dessous devrait illustrer ce que je veux, mais cela ne fonctionne pas. </p> <blockquote> <p>(Erreur d'analyse : identifiant inattendu)</p> </blockquote> <pre class="brush:js;toolbar:false;">function MyInput({isRequired}) { return <input classname="foo" {isRequired ? "required" : ""} /> } ≪/pré> <p><br /></p>
P粉665427988P粉665427988585 Il y a quelques jours722

répondre à tous(2)je répondrai

  • P粉545218185

    P粉5452181852023-08-21 13:12:17

    La réponse de

    juandemarco est généralement correcte, mais voici une autre option.

    Construisez un objet à votre goût :

    var inputProps = {
      value: 'foo',
      onChange: this.handleChange
    };
    
    if (condition) {
      inputProps.disabled = true;
    }

    Utilisez spread pour le rendu, et vous pouvez également choisir de transmettre d'autres accessoires.

    <input
        value="这个值会被inputProps覆盖"
        {...inputProps}
        onChange={overridesInputProps}
     />

    répondre
    0
  • P粉863295057

    P粉8632950572023-08-21 11:18:48

    Apparemment, pour certaines propriétés, si la valeur transmise à React n'est pas une vraie valeur, React omettra intelligemment la propriété. Par exemple :

    const InputComponent = function() {
        const required = true;
        const disabled = false;
    
        return (
            <input type="text" disabled={disabled} required={required} />
        );
    }

    Vous obtiendrez :

    <input type="text" required>

    Mise à jour : Si quelqu'un est curieux de savoir comment et pourquoi cela se produit, vous pouvez trouver les détails dans le code source de ReactDOM, en particulier aux lignes 30 et 167 du fichier DOMProperty.js.

    répondre
    0
  • Annulerrépondre