React学习之高级ReactDOM(二十四)

1.概述

react-dom中的顶级API

render()
unmountComponentAtNode()
findDOMNode()

浏览器支持情况

React支持所有流行的浏览器,包括IE9+

2.函数具体

render()

ReactDOM.render(
  element,
  container,
  [callback]
)

React元素插入到被提供的容器中,同时返回一个组件的引用。
如果React元素已经渲染到了容器中,那么当前的render操作就会变成更新。
回调函数发生在组件被渲染到DOM或者更新完之后。

注意

  1. ReactDOM.render()进行渲染的是针对于你提供的容器,同时其中任何已经存在的DOM元素都会在第一次渲染时被替换,接下来的更新就是基于DOM diff算法来优化。

  2. ReactDOM.render()不会修改容器,只会修改容器的孩子,它的渲染会覆盖之前存在的孩子内容

  3. ReactDOM.render()返回一个根组件的实例,然而,这个返回值是以前版本留下来的兼容做法,以后可能会被抛弃,所以如果你需要用到根组件的实例,请使用ref来获取,而不是得到那个返回值。

unmountComponentAtNode()

ReactDOM.unmountComponentAtNode(container)

将一个被装载的组件从container中卸载下来并且清除它绑定的事件和状态,这里要注意如果你设置了定时器的话,可能没有停止,请在componentWillUnmount()将定时器给清除掉。

如果container内部没有组件,则这个函数什么用也不做,如果组件被卸载了,就会返回true否则返回false

findDOMNode()

ReactDOM.findDOMNode(component)

如果该组件已经被装载在DOM上了,该函数就会返回浏览器中的DOM节点元素。

这个方法是非常有用的,它可以读取到被转载到DOM中的元素的value值和相关绑定事件。当然更多情况下,你都是通过ref去获取DOM节点而避免使用findDOMNode,当render返回null或者false的时候,findDOMNode返回null.

当然reffindDOMNode有着本质上的差别,ref获取的是当前组件的实例,而不是DOM,如果ref放在DOM中获取的就是DOM节点元素,如果是组件则是组件实例,而findDOMNode获得的则是一个容器或者说一个组件中的DOM元素,也就是说,如果你用了多重组件嵌套,那么它会获得最开始出现的DOM元素。

所以说findDOMNode具有一定程度的穿透性,它能穿透一层又一层的组件,找到底层的DOM节点。

findDOMNode只能作用于已经被装载的组件,当然如果你传入一个DOM元素的话会返回它本身,如果你使用了一个没有装载完的元素就获取不到任何信息。

还有一个点需要注意的是,findDOMNode不能用于函数式组件

下一篇将讲ReactReactDOMServer

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值