Скажем, у меня есть компонент Parent
, который отображает набор компонентов Child
. При зависании одного из этих компонентов Child
я хочу выделить (bg color) компоненты Child
, которые принадлежат к одной группе.Как выбрать группу детей из родителя?
См ниже код, каждый Child
имеет свойство группы:
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')
);
Если я парить Child
с идентификатором собственности 6, как я выделяю все Child
компонентов, которые в той же группы, то есть группы 2?
NB: Я новичок в реактиве и сожалею, если заголовок вводит в заблуждение.
это здорово. Не могли бы вы объяснить мне, как работает этот код?'className = {this.props.active && 'active'}' – Matthew
Конечно! Это довольно «короткое замыкание» оценки для присвоения имени класса. Поскольку 'active' - это булевская форма, переданная компоненту, мы можем оценить ее. Если он будет «истинным», он продолжит оценку и назначит строку 'active' (в данном случае, наше имя класса). В случае, если это «ложь», он остановится и вообще не назначит класс). Я видел эту схему в React, когда вы либо хотите присвоить что-то или вообще ничего (в отличие от тернарного оператора). Надеюсь, это прояснит! –
В качестве дополнения вы можете написать его так: 'className = {this.props.active? 'active': ''} '. Оба подхода эквивалентны. Мне просто нравится, как лучше. –