Реагировать получить все дети рефери

У меня есть компонент, который отображает динамических потомков, каждому из этих детей должен быть назначен реф, например ref={'childID' + index}

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

Есть ли способ сделать это?

2 ответа

Вы должны быть в состоянии пройти через this.refs использование объекта Object.keys,

Object.keys(this.refs).forEach(key =>
  const ref = this.refs[key];
  ...
);

Вы можете использовать стиль обратного вызова для ref Проп, чтобы собрать все ссылки.

Вот грубый пример того, как это будет выглядеть.

var refs = {};

function refCollector(id) {
  return function(element) {
    refs[id] = element;

    if(allRefsCollected()) {
      // do some work with all refs
    }
  }
}

function allRefsCollected() {
  return Object.keys(refs).length >= children.length;
}

return children.map((Child, index) => {
  return <Child ref={refCollector(index)} />;
});

когда allRefsCollected возвращает true, вы будете знать, что все дети были оказаны и refs будет объект, отображение id в element,

Другие вопросы по тегам