1.不直接操作dom

今天在和同学讨论的时候,发现了一些以前没注意的问题。

这段时间自己学习时一直都是用原生js写代码,但是以前在公司经常使用jq,也不知不觉间让我习惯了操作dom的倾向。

使用vue也好react也好,在做一些页面操作时,难免总会使用getElementXXX的api。今天同学说了一句“你这种方式和jq有什么区别?”让我意识到自己的解题思路还没完全转变过来。

既然我们使用react,就应该专注在数据层面上的操作,一般而言真的无需去直接操作dom。我当即对页面代码进行调整,将页面特效相关的部分全部用state来操作,结果证明确实没必要直接操作dom。

当然,有时候直接操作dom可能更方便直接,甚至代码量更少。但是Dom操作和js计算的性能消耗完全不在一个层级上,当然还是选择js计算...

要熟悉数据流思想,通过改变数据去改变dom

2.react的事件绑定,不使用匿名函数

首先,react封装的event对象不需要在标签的事件特性中传递给方法。

在类中写事件回调方法时,比较好的还是文档推荐的前两种方式:

 handle=(e)=>{}
 //...
constructor(props){
super(props)
this.handler=this.handler.bind(this);
}
handler(){}
//...

主要是今天debug的时候,我在调试过程中使用了onTouchStart={(e)=>{this.handler}}这种方法测试,然后想起这种方式好像是不推荐的,去官网一查,果然,因为会产生多余的闭包。事实上前两种方式都可以,只是看个人习惯罢了。

3.自定义特性使用data-xx,在回调中用e.target.dataset获取就好了,解构赋值真的蛮好用

最新文章

  1. 课程上线 -“新手入门 : Windows Phone 8.1 开发”
  2. webdriverAPI-Java
  3. Android界面组件的四种启动方式
  4. ASP.NET Core – 2300% More Requests Served Per Second
  5. Unix调试工具dbx使用方法
  6. 这几天对Redis的初探,写一个阶段性的东西
  7. AC日记——逃跑的拉尔夫 codevs 1026 (搜索)
  8. linux查看python安装路径,版本号
  9. Mac 下 命令收藏
  10. 安装配置Apache
  11. [未完成]关于GUI Java图形化界
  12. java servlet简述
  13. 探秘小程序(7):view组件
  14. (qsort)绝对值排序
  15. spring注解@Scheduled中fixedDelay、fixedRate和cron表达式的区别
  16. Java方法containsAll学习
  17. 算法笔记_214:第六届蓝桥杯软件类校赛真题(Java语言A组)
  18. thinkphp 控制器unset删除对象变量失败。。
  19. C#通过rdp账密直接打开远程桌面
  20. cocos2d-x游戏引擎核心之四——动作调度机制

热门文章

  1. Auth认证中的think_auth_rule type字段干嘛用的?
  2. if __name=='__main__"的作用
  3. 移动端上传图片(引入exif-js,图片被压缩为base64)
  4. Axios 拦截器中添加headers 属性
  5. XML--XML从入门到精通 Part 1 认识XML
  6. 思维+模拟--POJ 1013 Counterfeit Dollar
  7. codeforce 270B Multithreading
  8. spring内嵌jetty容器,实现main方法启动web项目
  9. python学习之如何一次性输出多个变量的值
  10. python执行脚本报错: Non-ASCII character '\xe4' in file yang.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details