根据数据属性渲染多个组件

Render multiple components based on data attributes

在 ReasonReact 上,如果我想通过 id 在 HTML 元素上渲染特定元素,我可以使用内置函数 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 的文档中找不到关于如何执行此操作的任何地方。有人可以帮助我吗?

提前致谢。

ReasonReact 有一个接受 Dom.elementReactDOMRe.render 函数。然后,如果您愿意,您可以自己定义 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 功能,如果您需要的话。