ReactDOM render -> DOMParser -> querySelectorAll -> возвращающий ноль

const temp = document.createElement('div');
ReactDOM.render(component, temp);
const parsed = new DOMParser().parseFromString(
  temp.innerHTML,
  'text/html'
);
parsed.querySelectorAll(selector); // <- returns null rather than NodeList

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

Не суди!:-)

Я думаю, что я делаю все вышеизложенным способом, который я вполне могу ожидать, чтобы дать мне надлежащий результат, но ясно, что я что-то упускаю.

1 ответ

const temp = document.createElement('div');
ReactDOM.render(component, temp, () => {
  const parsed = new DOMParser().parseFromString(
    temp.innerHTML,
    'text/html'
  );
  const selected = parsed.querySelectorAll(selector);
});

Как и со многими такими ошибками, этот пришел в состояние гонки. Рендеринг занимал достаточно много времени, чтобы первый аргумент parseFromString был недоступен синхронно. Использование необязательного обратного вызова для ReactDOM.render исправило это.

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