У меня есть родительский компонент с несколькими одинаковыми дочерними элементами, из которых только один может быть активным одновременно. Активное состояние устанавливается внутренним событием самого ребенка, например, нажатием кнопки, а не родителем. Я хочу, чтобы активное состояние было сброшено вызовом одного из братьев и сестер, но я не могу найти способ, чтобы братья и сестры могли вызывать методы друг друга. Я пробовал ссылки, но они доступны только от родителя, и я не могу найти способ сделать дочернюю ссылку доступной внутри себя, не поддерживая список ссылок на родителя, который мне не нужен, так как мне нужно только сохранить текущую активную.
Простой пример
Например,
<Parent>
<Child active={false}/>
<Child active={false}/>
<Child active={true}/>
</Parent>
, где дочерний элемент похож на
export class Child extends React.Component {
constructor() {
super(props);
state = {
active: props.active;
}
}
setActive(active) {
setState ({active : active});
}
onclick = () => {
// get currently active other sibling?
// call setActive direct on other sibling.
// e.g. other.setActive(false);
// set current to active using the same method
this.setActive(true);
}
render() {
return (
<button onclick={this.onclick}/>
<p>current state={this.state.active ? "active": "inactive"}
);
}
}
Я попытался передать функции родительского setActiveRef и getActiveRef как просит детей поддерживать единый общий ref (активный) и использовать getActiveRef (). current.setActive напрямую, но я не могу найти способ получить доступ к ref дочернего компонента изнутри себя для отправки в setActiveRef () на родитель в первую очередь.
любой совет высоко ценится. спасибо