L'utilisation des instructions if/else
directement dans JSX peut être délicate car le JSX est principalement utilisé pour décrire à quoi devrait ressembler l'interface utilisateur, et il ne prend pas intrinsèquement les instructions de flux de contrôle traditionnelles. Cependant, vous pouvez toujours gérer la logique conditionnelle dans votre JSX en utilisant le flux de contrôle de JavaScript en dehors du JSX, ou en utilisant d'autres techniques telles que les expressions conditionnelles en ligne.
Voici un exemple de la façon dont vous pourriez utiliser if/else
Logic dans un composant React avant de rendre le JSX:
<code class="jsx">function MyComponent(props) { let message; if (props.isLoggedIn) { message = <h1>Welcome back!</h1>; } else { message = <h1>Please log in.</h1>; } return ( <div> {message} </div> ); }</code>
Dans cet exemple, l'instruction if/else
est utilisée en dehors du JSX pour définir un message
variable, qui est ensuite interpolé dans le JSX. Cette approche maintient votre JSX propre et concentré sur le rendu.
Oui, vous pouvez utiliser les opérateurs ternaires directement au sein de JSX pour le rendu conditionnel. C'est un modèle commun et peut être très concis. Les opérateurs ternaires vous permettent de rendre différents éléments ou composants en fonction d'une condition directement dans votre JSX.
Voici comment vous pourriez utiliser un opérateur ternaire dans JSX:
<code class="jsx">function MyComponent(props) { return ( <div> {props.isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please log in.</h1>} </div> ); }</code>
Dans cet exemple, l'opérateur ternaire vérifie l'hélice isLoggedIn
et rend différents éléments JSX en fonction de sa valeur. Cette approche est utile pour des scénarios de rendu conditionnel simples directement dans votre JSX.
Il existe plusieurs alternatives à if/else
pour gérer la logique conditionnelle dans les composants React, chacun avec ses propres cas d'utilisation et avantages:
Opérateur Logical && : Ceci est utile pour conditionnellement, y compris un élément de votre JSX. Si la condition est true
, l'élément après &&
sera rendu.
<code class="jsx">function MyComponent(props) { return ( <div> {props.isLoggedIn && <h1>Welcome back!</h1>} {!props.isLoggedIn && <h1>Please log in.</h1>} </div> ); }</code>
&&
, mais plus avancé, permettant différents résultats basés sur différentes conditions sans utiliser if/else
.React.UseMemo Hook : utile pour les valeurs calculaires conditionnelles qui sont coûteuses à calculer.
<code class="jsx">const message = React.useMemo(() => { if (props.isLoggedIn) { return <h1>Welcome back!</h1>; } else { return <h1>Please log in.</h1>; } }, [props.isLoggedIn]);</code>
Composition des composants : vous pouvez créer des composants séparés pour différentes conditions et les rendre conditionnellement.
<code class="jsx">function LoggedInMessage() { return <h1>Welcome back!</h1>; } function LoggedOutMessage() { return <h1>Please log in.</h1>; } function MyComponent(props) { return ( <div> {props.isLoggedIn ? <loggedinmessage></loggedinmessage> : <loggedoutmessage></loggedoutmessage>} </div> ); }</code>
Pour améliorer la lisibilité du code et éviter d'utiliser les instructions if/else
directement à l'intérieur de JSX, vous pouvez mettre en œuvre les stratégies suivantes:
if/else
en dehors de votre JSX pour définir des variables ou des fonctions qui seront utilisées dans le JSX. Cela maintient le JSX propre et rend la logique plus lisible.Utilisez des fonctions d'assistance : vous pouvez définir des fonctions d'assistance qui encapsulent la logique conditionnelle, puis appeler ces fonctions dans votre JSX.
<code class="jsx">function getMessage(isLoggedIn) { if (isLoggedIn) { return <h1>Welcome back!</h1>; } else { return <h1>Please log in.</h1>; } } function MyComponent(props) { return ( <div> {getMessage(props.isLoggedIn)} </div> ); }</code>
useMemo
peut être utilisé pour calculer conditionnellement les valeurs qui affectent votre JSX, en gardant la logique séparée du JSX lui-même.En utilisant ces stratégies, vous pouvez vous assurer que votre JSX reste lisible et axé sur la description de l'interface utilisateur, tandis que votre logique conditionnelle est gérée de manière plus gérable et maintenable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!