ReactJS读书笔记五:DOM操作
来源:互联网 发布:sql语句添加列 编辑:程序博客网 时间:2024/05/23 18:30
一 获取DOM元素
react可以允许我们通过 ref 来定位一个组件。具体的做法是:
先给一个组件设置一个 ref=‘xxx’ 的属性,注意这个ref必须是全局唯一的。
<input ref=‘city’ />
然后就可以通过 this.refs.city 来访问这个组件。
但是请注意,这里拿到的只是虚拟DOM,而不是真实的DOM。
只有在render方法执行之后,并且react已经完成了DOM的更新,才能通过 this.refs.city.getDOMNode() 来拿到原生的DOM元素。
如果你在react更新DOM之前这么做,很有可能拿到的是空的或者是旧的DOM元素。
一般我们会在 componentDidMount 后者 事件回调中使用 getDOMNode 方法。
二 整合非React库
我们需要操作原生DOM最常见的情况就是我们使用了其他的库进行DOM操作。比如我们使用了jquery的一个自动补全插件,他需要在原生DOM上初始化。
这个时候我们需要通过 getDOMNode() 拿到原生的DOM并调用jquery插件的初始化方法。
如下代码所示,我们有一个City组件,它内部调用了jquery autocomplete做了自动补全。在选中一个城市之后会log出来。
这样做没什么问题,但是在City中处理一个jquery的自动补全插件是很烦人的一件事。而且,如果自动补全插件升级了你可能还需要去改City组件的代码。
假设我们没有足够的精力写一个基于React的自动补全插件,我们更好的做法是把自动补全“包装”成一个 React组件,如下所示,我们包装了一个 AC 组件:
三 侵入式插件
上面的自动补全插件其实还算好,他没有改变DOM元素,只是绑定了事件。
有些插件可能会直接改变你的DOM元素,这样会导致 虚拟DOM 和原生DOM不一致的问题。这个时候最好的做法就是不要在render方法中渲染虚拟DOM了,而是直接在 componentDidMount 方法中自行创建原生DOM。但是注意请在 componentDidUnmount 中销毁你创建的DOM。
不过要尽量避免这种情况,因为 Virtual DOM 才是 react的精髓所在。
阅读全文
0 0
- ReactJS读书笔记五:DOM操作
- ReactJS读书笔记五:DOM操作
- ReactJS读书笔记:DOM操作
- ReactJS如何DOM操作?
- ReactJS读书笔记四:mixins
- ReactJS读书笔记四:mixins
- Javascript Dom编程艺术读书笔记(五)
- javaScript-DOM操作(五)
- 【读书笔记】【jQuery基础教程】【第五章--DOM操作】
- 高性能javascript读书笔记之操作DOM
- ReactJS读书笔记二:组件生命周期
- ReactJS读书笔记二:组件生命周期
- jQuery开发之DOM操作五
- jquery中DOM节点操作(五)
- jQuery学习五-DOM和CSS操作
- Jquery中的DOM操作 (五.包裹节点和属性操作)
- ReactJS读书笔记一:深入理解JSX
- ReactJS读书笔记一:深入理解JSX
- Error: connect EACCES /.pm2/rpc.sock 报错
- Laravel页面引入css/js等静态文件
- 比特币源码学习笔记(四)
- 设计模式之备忘录模式
- Codeforces 598D Igor In the Museum【预处理Bfs】
- ReactJS读书笔记五:DOM操作
- Qualcomm平台的SPI驱动框架分析
- syslog的搭建
- Java多线程并发中的双重检查锁定与延迟初始化
- firstChild和firstElementChild的区别
- 动态内存分配
- 再谈“我是怎么招聘程序员的”
- 快速开方
- ReactJS学习笔记六:感想