2015-10-19 16 views
5

Nie chcę, aby uczynić tytuł gdy opis jest pustySprawdź, czy reagują elementem jest pusty

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> 

Co poprawny sposób zamiast opis! By sprawdzić czy jego puste?

+0

Czy masz jakiś stan/podpory, które możesz sprawdzić, aby sprawdzić, czy opis _ musi być pusty? Lepiej jest używać tego sprawdzenia niż sprawdzać dzieci z elementu. – J3Y

+0

Naprawdę nie dane są budowane przez niektóre rekwizyty, które są konwertowane/filtrowane w komponencie myelement. Jeśli nie ma sposobu, muszę przenieść ten Logik do elementu nadrzędnego. Wtedy mógłbym sprawdzić te rekwizyty. –

Odpowiedz

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> 

Lub po prostu:

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

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

Imo lepsze to praktyka, że ​​jeśli elementem opis nie jest potrzebny, to nie jest renderowane zamiast powrocie zerowy w to render. Ponieważ prawdopodobnie wyślesz dane przez rekwizyt. I podobnie, jeśli nie chcesz renderować tego komponentu w ogóle, to powinno się zdarzyć w rodzicu.

+1

Więc jedynym rozwiązaniem jest przeniesienie logiki konwersji/filtrów danych w elemencie do elementu nadrzędnego i sprawdzenie następnie na tych zmiennych? –

+1

Yup; jak rozumiem, jest to bardzo celowo częścią schematu odgórnego renderingu Reactha. – machineghost