ReactDOM API

react-dom

  • react-dompackage 提供了可在应用顶层使用的DOM方法,所有的顶层 API 都可调用

React 支持所有的现代浏览器,IE9及以上版本,但是需要引用相关 polyfills,那些在不兼容ES5语法的浏览器中奋斗的同志需要孤军奋战了。

API

render()

1
2
import ReactDOM from 'react-dom'
ReactDOM.render(element,container[, callback])

在提供的container里渲染一个 React 元素,并返回该组件的引用, 对于 无状态组件返回 null。
如果 React 元素 已经在 container中渲染过,那么将会更新里面的元素,并仅会在必要的时候改变DOM 映射新的 React 元素。
callback将在组件被渲染或更新后执行

当首次调用时,container节点中所有DOM元素都会被替换,后续的调用则使用 React 的 DOM diff 算法 进行高效更新。
rend()不会修改container节点,之后修改子节点,可以在不覆盖现有子节点的情况下,将组件插入已有的DOM节点中。对服务端渲染容器进行 hydrate操作的方式已被废弃,且会在 1
rend()目前会返回对根组件 ReactComponent 实例的引用。但应该避免使用它,因为历史遗留下来的内容,在未来版本中,组件渲染某些情况下可能会是异步的。对服务端渲染容器进行 hydrate操作的方式已被废弃,且会在 1
如果需要根组件 ReactComponent 实例的引用,推荐使用callback ref
使用rend()对服务端渲染容器进行 hydrate操作的方式已被废弃,且会在 17版中被 hydrate()

hydrate()

1
ReactDOM.hydrate(element,container[, callback])

此方法和 render()相同,区别在于 ReactDOMServer 渲染的容器中对HTML的内容进行 hydrate 操作。React 会尝试在已有的标记上绑定事件监听器。

unmountComponentAtNode()

1
ReactDOM.unmountComponentAtNode(container)

此方法将卸载 DOM 中的组件,会将事件处理器和 state 一并清除。如果指定的 container 中没有对应已挂在的组件,那么此方法什么也不会做,如果组件被移除将会返回 true,如果未移除将返回false

findDOMNode()

1
ReactDOM.findDOMNode(component)

如果组件已被挂载到DOM上,此方法会返回浏览器中x相应的原生DOM,不能用于函数组件,对于在未挂载的组件中调用将发生异常。对于读取DOM中的值很有用,一般推荐使用 ref来获取DOM元素

此方法是访问底层DOM节点的应急方案,严格模式中被弃用

createPortal()

1
ReactDOM.createPortal(child,container)

创建portal,它提供一种将子节点渲染到DOM节点中的方式,该节点存在于DOM组件的乘此结构之外。

--------------------- Thank you for reading ---------------------