Angenommen, ich habe eine Parent
Komponente, die einen Satz Child
Komponenten rendert. Wenn ich eine dieser Child
Komponente schwebe, möchte ich die Child
Komponenten hervorheben (bg Farbe), die zur selben Gruppe gehören.Wie wähle ich eine Gruppe von Kindern aus dem Elternteil?
Siehe Code unten hat jede Child
eine Gruppe Eigenschaft:
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')
);
Wenn ich schweben Child
mit id-Eigenschaft von 6, wie kann ich alle die Child
Komponenten hervorheben, die in der sind gleiche Gruppe, dh Gruppe 2?
NB: Ich bin neu zu reagieren und tut mir leid, wenn der Titel irreführend ist.
das ist großartig. Könnten Sie mir bitte erklären, wie dieser Code funktioniert?'className = {this.props.active && 'active'}' – Matthew
Sicher! Dies "verkettet" die Bewertung, um einen Klassennamen zuzuweisen. Da 'active' eine boolesche Requisite ist, die an die Komponente übergeben wird, können wir dagegen auswerten. Sollte es "wahr" sein, wird die Auswertung fortgesetzt und der String "aktiv" (in diesem Fall unser Klassenname) zugewiesen. Falls es "falsch" ist, wird es dort aufhören und überhaupt keine Klasse zuweisen. Ich habe dieses Muster in React oft gesehen, wenn Sie entweder etwas oder gar nichts zuweisen wollen (im Gegensatz zu einem ternären Operator). Hoffe das klärt es auf! –
Als Zusatz könnte man es so schreiben: 'className = {this.props.active? 'aktiv': ''} '. Beide Ansätze sind gleichwertig. Ich mag den ersteren besser. –