Моим первым инстинктом было бы добавить className={match ? "active" : ""}
к родителю li
, но так как вы спрашиваете об этом, я предполагаю, что вы уже пробовали это.
Вы можете покопаться в детских реквизитах, чтобы узнать, есть ли у любого из них реквизит match
(или любой другой, который бы указывал, что они активны). Следующая функция может найти match
реквизит от детей.
const childMatch = children => {
if (!children) { return false }
if (Array.isArray(children)) {
return children.reduce(
(acc, child) => acc || Boolean(child.props.match),
false
)
}
return Boolean(children.props.match)
}
Вы можете использовать его как className={childMatch(this.props.children) ? "active" : ""}
.
Если нужная вам опора глубже в дереве детей, вы, конечно, можете копать глубже. Вы можете найти внуков как child.props.children
.