ReactJs:是否可以按类名将 DOM 渲染为文档?

IT技术 javascript dom reactjs
2021-05-06 10:19:50

我正在学习 ReactJs 并且非常喜欢它。我想问一下我们是否可以按类名将虚拟 DOM 渲染到文档。

React.render(
    <CommentBox url="data/comments.json" pollInterval={2000} />,
    document.getElementById('class')
);

我试图通过

getElementByClassName('class')

作为 react 的 render 方法的第二个参数,它不起作用。React 是否只将 DOM 渲染到只有 ID 的节点,还是有一种解决方法也可以将节点与类一起使用?

2个回答

看来您使用了错误的方法。

可能你应该使用getElementsByClassName而不是getElementByClassName. 并且不要忘记getElementsByClassName返回一个类似数组的 obj HTMLCollection,所以选择第一个元素是必要的。

React.render(
  <CommentBox url="data/comments.json" pollInterval={2000} />,
  document.getElementsByClassName('className')[0]
);

有关更多信息,请查看文档

要回答上面答案中的 Sam 问题,正如@xcatliu 所指出的,getElementsByClassName返回一个类似数组的 HTML 元素列表,因此您可以使用 for 循环来遍历它。

这样,相同的 React 组件将作为具有相同类属性的每个 HTML 元素的子元素呈现。

像下面这样:

class Component extends React.Component {
  constructor(props) {
    super(props)
  }
  render() {
    return (
      <p>Hello</p>
    )
  }
}

for (let i = 0; i < document.getElementsByClassName("container").length; i++) {
  ReactDOM.render(<Component />, document.getElementsByClassName("container")[i]);
}