Как я могу сравнить равенство `this` внутри одного компонента с результатами React.Children.forEach? - PullRequest
0 голосов
/ 12 апреля 2020

Для контекста я пытаюсь установить индекс каждого Компонента относительно его родительского элемента как внутреннее состояние Компонента (поэтому я могу делать такие вещи, как 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(), показывающий два экземпляра, которые следует считать равными:

console log output Как видите, сравнивать ссылки неудобно - некоторые внутренние свойства, такие как _reactInternalFiber и _owner, выглядят многообещающе, но я пока не нашел подходящего метода. , Кстати, это часть структуры, которую я создаю, поэтому никакие авторские свойства разработчика не могут быть использованы для косвенного сравнения - в идеале мне нужен надежный способ сравнить эти два экземпляра.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...