2017-09-15 4 views
0

Eigentlich versuche ich, verstecken und zeigen einige HTML-Elemente in reagieren. Ich habe ein Mitarbeiterformular erstellt, in dem wir mehrere Partitionen haben, zum Beispiel persönliche Informationen, Kontaktinformationen etc ... Ich erstellte nächste und vorherige Schaltflächen in Form zum Anzeigen und Ausblenden anderer Partitionen im Formular Es gibt eine Partition in der Wir haben Bildungsdetails zu füllen, also entschied ich mich, eine Plus-und Minus-Taste zu halten, um Bildungsdetails mit Bedingungen hinzuzufügen.Conditional-Rendering in reagieren js (Zustand innerhalb einer mehr Bedingung)

But finally, my problem is like i have complex conditions on **render** function: 

{someCondition && <div> 
{anotherCondition && <div></div>} 
</div>} 

But, i'm getting: *Adjacent JSX elements must be wrapped in an enclosing tag error*. So, what i'm supposed to do? 
+0

Wie sieht der Code Ihres Rückgabeblocks aus? –

+0

Sorry, ich habe deine Frage nicht verstanden –

Antwort

1

Aus dem Code, den Sie gab, glaube ich Ihnen eine umschließende Tag wie folgt benötigen:

//div wraps everything else so the component can render. 
<div> 
{someCondition && <div> 
{anotherCondition && <div></div> 
</div>} 
</div> 
2

Sie müssen sie in einem Div zuerst wickeln. Außerdem sieht Ihre Syntax ein wenig falsch aus (Sie haben eine schließende } verpasst).

{someCondition && (
    <div> 
    {anotherCondition && <div></div>} 
    </div> 
)} 
+0

Danke für die Korrektur, aber der obige Code ist nicht mein ursprünglicher Code, ich habe nur ein Beispiel für mein Problem gegeben .. ;-) –

0

Sie müssen immer ein einzelnes Element händigt die übrigen umschließt.

Wie in Bezug auf bedingtes Rendering, hier einige weitere Tipps sind, können Sie betrachten:

A. für einfache Bedingungen ist ternärer Operator sauber genug:

return condition ? <p>abc</p> : <p>def</p> 

B. Rendering-Funktionen für sauberere Code erstellen oder kompliziertere if-else

renderButton =() => { 
    if (isLoading) { return false } 
    if (something) { 
    return <div></div> 
    } else { 
    return <div></div> 
    } 
} 

render() { 
    return (
    <div> 
     { this.renderButton } 
    </div> 
) 
} 

C. gleiche wie oben, aber ohne neue Funktionen erstellen:

render() { 
    return (
    <div> 
    { 
     (()=>{ 
     if (something) { 
      return <div></div> 
     } else { 
      return <div></div> 
     } 
     })() 
    } 
    </div> 
) 
} 
Verwandte Themen