Powiedz, że mam komponent Parent
, który renderuje zestaw komponentów Child
. Po najechaniu na jeden ze składników Child
, chciałbym podświetlić (kolor bg) komponenty Child
należące do tej samej grupy.Jak wybrać grupę dzieci od rodzica?
patrz kod poniżej, każdy Child
ma właściwość Grupa:
https://jsfiddle.net/69z2wepo/53442/
const Parent = React.createClass({
render() {
const rows = [];
let group = 1;
for (let i = 1; i <= 12; i++) {
rows.push(<Child key={i} id={i} group={group} />);
if (i % 3 === 0) {
group++;
}
}
return (
<ul>
{rows}
</ul>
);
}
});
const Child = React.createClass({
render() {
return (
<li className="child">id: {this.props.id} - group: {this.props.group}</li>
);
}
});
ReactDOM.render(
<Parent />,
document.getElementById('app')
);
Gdybym aktywowania Child
z właściwości ID 6, w jaki sposób zaznaczyć wszystkie elementy Child
będących w ta sama grupa, tj. grupa 2?
NB: Jestem nowy, aby reagować i przepraszam, jeśli tytuł wprowadza w błąd.
to świetnie. Czy mógłbyś mi wyjaśnić, jak działa ten kod?'className = {this.props.active && 'active'}' – Matthew
Pewnie! To prawie "zwarcie" oceny, aby przypisać nazwę klasy. Ponieważ 'active' jest boolowskim podpisem przekazanym do komponentu, możemy go ocenić. Jeśli będzie "prawda", będzie kontynuował ocenę i przypisze ciąg 'active' (w tym przypadku nasza nazwa klasy). W przypadku, gdy jest to "false", zatrzyma się tam i nie będzie w ogóle przypisywał klasy). Często widziałem ten wzorzec w React, kiedy albo chcesz coś przypisać, albo nic (w przeciwieństwie do operatora trójskładnikowego). Mam nadzieję, że to oczyszcza! –
Jako dodatek, możesz napisać tak jak poniżej: 'className = {this.props.active? "aktywny": ""} ". Oba podejścia są równoważne. Po prostu lubię dawniej lepiej. –