ReactDOM.render()的第二个参数是否仅能为document.getElementById('app')?还有其他选项吗?
ReactDOM.render() 第二个参数的合法取值
ReactDOM.render() 的第二个参数要求是一个真实的DOM元素对象,除了常用的 document.getElementById('app'),你还可以传入这些类型的值:
- 其他DOM选择方法返回的单个元素:
document.querySelector():支持类选择器、属性选择器等更灵活的查询,比如document.querySelector('.app-root')document.getElementsByTagName()集合里的单个元素:比如document.getElementsByTagName('section')[0]document.getElementsByClassName()集合里的单个元素:比如document.getElementsByClassName('page-container')[0]
- 手动创建的DOM元素:
- 用
document.createElement('div')生成的新元素,你可以先把它插入到文档流,再作为参数传入,也可以直接渲染(不过通常会先挂载到页面上)
- 用
- 文档内置的顶层DOM元素:
document.body:直接把组件渲染到页面的body标签中document.documentElement(即html标签):不过这种用法很少见,一般不推荐,可能会干扰页面的基础结构
注意事项
- 传入的元素必须是已经(或即将)挂载到DOM树中的元素,否则React无法将组件渲染到页面上
- 不能传入字符串、null、数组或者非DOM对象,否则会抛出错误
内容的提问来源于stack exchange,提问作者SoulTech9
相关产品推荐
相关产品推荐

