2017-09-25 1 views
1

Je travaille avec des composants stylisés sur mon projet react-native et je me demande comment puis-je obtenir le parent parent à partir d'un élément enfant .. voici un exemple, j'ai 2-composantsreac-native avec les composants stylés parent prop

style
const First = styled.View` 
    display: flex; 
    width: 50px; 
    height: 50px; 
    background-color: ${props => props.selected ? 'blue' : 'red'}; 
` 
const Second = styled.Text` 
    // here I want to check if First has the selected prop. 
    color: ${props => props.selected ? '#fff' : '#000'}; 
` 

et mon propre React composant

const Test =() = (
    <First selected> 
    <Second>Test</Second> 
    </First> 
) 

maintenant comment puis-je vérifier si Seconds père (qui est First) a l'hélice selected? Je sais que ça va marcher si je vais donner l'attr sélectionné à Second mais ce n'est pas ce que j'essaie d'atteindre ... il doit y avoir un moyen parce qu'ils imbriqués, j'ai essayé de consoler le log et les accessoires arg mais je ne pouvais pas t trouve la valeur parente dans l'objet renvoyé par l'enfant.

grâce

+1

passer les accessoires parents comme de nouveaux accessoires pour enfants .. – John

+0

@ John, c'est le point que je ne veux pas utiliser deux fois le même accessoire, je veux l'obtenir du parent – greW

+2

Vous l'obtenez du parent lui-même quand vous passez en tant que accessoires à l'enfant. C'est le moyen le plus simple. Cependant, il n'est pas recommandé d'accéder à l'instance parent dans l'enfant. Cochez cette https://stackoverflow.com/a/34257785/1066839 – John

Répondre

0

Si vous voulez suivre modèle Réagissons, il y a un moyen. Pour passer le même accessoire au <second>.

ce que vous pouvez faire cependant, est d'utiliser un accessoire approprié à l'enfant comme ce qui suit

const Test =() = (
    <First selected> 
    <Second isParentSelected={selected} >Test</Second> 
    </First> 
) 

puis

const Second = styled.Text` 
    color: ${props => props.isParentSelected ? '#fff' : '#000'}; 
` 
+0

le point était comme je l'ai dit dans le post que je ne veux pas répéter les accessoires dans chaque composante, je voulais juste que les enfants utilisent l'accessoire du père. merci pour la réponse. – greW