2015-10-19 9 views
5

Ich will nicht, um den Titel machen, wenn Beschreibungprüfen reagieren, wenn Element leer

var description = <MyElement />; // render will return nothing in render in some cases 

if (!description) { // this will not work because its an object (reactelement) 
    return null; 
} 

<div> 
    {title} 
    {description} 
</div> 

leer Was ist der richtige Weg, statt! Beschreibung Wenn es leer zu überprüfen?

+0

Haben Sie irgendwelche Zustände/Stützen, die Sie überprüfen können, um zu sehen, ob die Beschreibung _should_ leer ist? Es ist besser, die Überprüfung mit diesen zu machen, anstatt die Kinder eines Elements zu untersuchen. – J3Y

+0

Nein, nicht wirklich die Daten werden von einigen Requisiten erzeugt, die in der myelement Komponente konvertiert/gefiltert werden. Wenn es keine Möglichkeit gibt, muss ich diese Logik in die übergeordnete Komponente verschieben. Dann könnte ich diese Requisiten einchecken. –

Antwort

1
var description, title; 

if (this.props.description) { 
    description = <Description description={this.props.description} />; 

    if (this.props.title) { 
     title = <Title title={this.props.title} />; 
    } 
} 

<div> 
    {title} 
    {description} 
</div> 

Oder einfach:

render() { 
    const { description, title } = this.props; 

    return (
    <div> 
     {title && description && <Title title={title} />} 
     {description && <Description description={description} />;} 
    </div> 
); 
} 

Imo ist es besser Praxis, dass, wenn Ihre Beschreibung Element dann nicht erforderlich ist, es nicht gemacht wird, anstatt Rückkehr null in es machen. Da würdest du die Daten wahrscheinlich durch eine Requisite schicken. Und wenn Sie diese Komponente überhaupt nicht rendern möchten, dann sollte das im Elternteil geschehen.

+1

Also die einzige Lösung ist, die Logik der Datenkonvertierung/Filter im Element in die Eltern zu verschieben und dann auf diese Vars zu prüfen? –

+1

Yup; Soweit ich es verstehe, ist dies sehr bewusst Teil des Top-Down-Rendering-Schemas von React. – machineghost

Verwandte Themen