Je mappe via un objet dans une application ReactJS. Entre chaque élément de ce mappage, j'ajoute un span avec un simple carret | .
Voici le code:
<div class="display-flex>
<span>Mapped Item 1</span>
<div class=âusers-overview-screen__no-last-childâ>
<span>|</span>
</div>
<span>Mapped Item 2</span>
<div class=âusers-overview-screen__no-last-childâ>
<span>|</span>
</div>
<span>Mapped Item 3</span>
<div class=âusers-overview-screen__no-last-childâ>
<span>|</span>
</div>
</div>
LE PROBLÈME :
Je veux que l'élément du mappage ait le | entre eux, mais le dernier, je veux afficher: aucun
Donc, j'ai ajouté un peu de classe pour faire juste ça. Affichez tout sauf le dernier enfant. Mais puisque le mappage a lieu, il pense que chaque carret est le last-child:
Voici le scss:
.users-overview-screen__no-last-child {
span:last-child {
display: none;
}
}
LA STRUCTURE DOM:
renderSecurityModes = (securityKey: string): JSX.Element => {
const { user } = this.props;
return (
<div key={securityKey} className="users-overview-screen__no-last-child">
{user && user.security && user.security[securityKey as SecurityMode] && (
<Fragment>
<span className="font-weight-medium mr-3 text-uppercase">{securityKey}</span>
<span className="text-border-gray mx-3">|</span>
</Fragment>
)}
</div>
);
};
Dans le scénario ci-dessus, je veux que le dernier carret , dans l'élément mappé 3, n'apparaisse pas du tout. Mais avec mon scss actuel, aucun carret n'apparaît.
Des idées, sur la façon de dire à la classe d'omettre uniquement la dernière absolument?
4 Réponses :
Vérifiez l'extrait de code J'ai mis à jour le code.
<div class="display-flex">
<span>Mapped Item 1</span>
<div class=âusers-overview-screen__no-last-childâ>
<span>|</span>
</div>
<span>Mapped Item 2</span>
<div class=âusers-overview-screen__no-last-childâ>
<span>|</span>
</div>
<span>Mapped Item 3</span>
<div class=âusers-overview-screen__no-last-childâ>
<span>|</span>
</div>
</div>
.display-flex div:last-child span {
display: none;
}
Malheureusement, cela ne fonctionne pas. Je mettrai à jour la description pour montrer comment le DOM imprime les éléments mappés.
ajouté un extrait de code, cela résoudra votre problème.
Essayez ceci:
.display-flex div:last-child{
display: none;
}
Ce serait la meilleure option pour vous: -
.users-overview-screen__no-last-child:last-child span:last-child {
display: none;
}
Vous avez différentes options, en voici deux:
.display-flex {
display: flex;
span {
padding: 0 10px;
box-sizing: border-box;
border-right: 1px solid black;
}
&:last-of-type {
border-right: none;
}
}
Cependant, je pense que la meilleure option serait de donner une bordure à droite strong> et padding à chaque élément d'étendue et supprimez les carettes ou les séparateurs , ce qui est bien net et net:
<div class="display-flex"> <span>Mapped Item 1</span> <span>Mapped Item 2</span> <span>Mapped Item 3</span> </div>
.display-flex {
display: flex;
}
span {
padding: 0 10px;
box-sizing: border-box;
border-right: 1px solid black;
}
span:last-of-type {
border-right: none;
}
Au-dessus de css dans scss:
.users-overview-screen__no-last-child {
&:last-of-type { /* takes last element wrapping the item */
&:last-child { /* removes the last element of the last item*/
display: none;
}
}
}