2017-01-05 12 views
8

mam funkcjonalny/bezpaństwowcem składnik i składnik, który odziedziczył po React.Component:React - jak ustalić, czy element jest bezpaństwowy/funkcjonalny?

const Component1 =() => (<span>Hello</span>) 

class Component2 extends React.Component { 
    render() { 
    return (<span>Hello</span>) 
    } 
} 

Jak mogę określić, czy składnik jest bezpaństwowcem, czy nie? Czy istnieje jakiś oficjalny sposób?

isStateless(Component1) // true 
isStateless(Component2) // false 
+0

Dlaczego trzeba o tym wiedzieć? –

+1

@JuanMendes Mogę ustawić 'ref' prop, używając funkcji' React.createElement', ale składniki funkcjonalne nie mogą mieć wartości ref. W tym czasie nie znam typu komponentu (jest dynamiczny). – madox2

+0

Chcesz ustawić refs na komponent poza sobą? –

Odpowiedz

12

można sprawdzić to prototyp, na przykład:

function isStateless(Component) { 
    return !Component.prototype.render; 
} 
+1

fajny, dzięki! – madox2

+0

Popraw funkcję, ma błąd. Zobacz moją odpowiedź poniżej. – asdfasdfads

-1

Poprawione odpowiedź od Doron Brikman powyżej

function is_stateless(Component) 
{ 
    return typeof Component !== 'string' && !Component.prototype.render 
} 
Powiązane problemy