Рендеринг нескольких компонентов на основе атрибутов данных

В ReasonReact, если я хочу визуализировать определенный элемент в элементе HTML, id Я могу использовать встроенную функцию renderToElementWithId(ReasonReact.reactElement, Dom.element), например:

ReactDOMRe.renderToElementWithId(<MyComponent />, "myComponent");

У меня есть несколько <input /> HTML-теги, и я хочу, чтобы он отображался в каждом <input /> который имеет определенный атрибут данных. Более конкретно, я хочу, чтобы каждый input у которого есть data-type="tags" на это будет оказано <MyComponent />, На Javascript мы могли бы сделать что-то вроде document.querySelectorAll("[data-type=tags]") итерируйте результат рендеринга компонентов.

Хотя я не могу найти ни в документации ReasonReact, ни в BSB о том, как это сделать. Кто-нибудь может мне помочь?

Заранее спасибо.

1 ответ

Решение

ReasonReact имеет ReactDOMRe.render функция, которая принимает Dom.element, Вы можете определить querySelectorAll себя, если хотите

[@bs.val] [@bs.scope "document"]
external querySelectorAll : string => Dom.element = "";

querySelectorAll("[data-type=tags]")
|> Js.Array.forEach(element => ReactDOMRe.render(<MyComponent />, element));

Или вы можете использовать bs-webapi, который дает вам querySelectorAll вместе с целой кучей других функций DOM, если они вам нужны.

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