Comment ajouter dynamiquement des propriétés basées sur les conditions dans les composants React ?
P粉665427988
P粉665427988 2023-08-20 14:54:00
0
2
582
<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粉665427988
P粉665427988

répondre à tous(2)
P粉545218185

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}
 />
P粉863295057

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!