Для контекста я пытаюсь установить индекс каждого Компонента относительно его родительского элемента как внутреннее состояние Компонента (поэтому я могу делать такие вещи, как isFirstChild
и isLastChild
).
I иметь доступ к дочерним элементам родителя Компонента (таким образом, Компонент + его братья и сестры) изнутри Компонента.
В некоторых методах жизненного цикла после Компонент изначально смонтирован / отрендерен, я пытаюсь определить индекс Компонента, сравнивая его с индексом дочерних элементов его родителя, используя React.Children.forEach
:
let INDEX;
React.Children.forEach(PARENT.children, (target, i) => {
// This method is very brittle and fragile - not suitable, though may
// work for 85% of cases in practice
if (this.props.children === target.props.children) {
INDEX = i;
}
console.log(this, target);
...
});
Пример вышеупомянутого console.log()
, показывающий два экземпляра, которые следует считать равными:
Как видите, сравнивать ссылки неудобно - некоторые внутренние свойства, такие как _reactInternalFiber
и _owner
, выглядят многообещающе, но я пока не нашел подходящего метода. , Кстати, это часть структуры, которую я создаю, поэтому никакие авторские свойства разработчика не могут быть использованы для косвенного сравнения - в идеале мне нужен надежный способ сравнить эти два экземпляра.
Спасибо.