React太灵活了特别是配上了es6之后,它就像泥沙里的泥鳅,越想抓住越是抓不住;除此之外我在使用react的时候时不时的会有些纠结

1.组件中有很多事件处理,到底是使用一个方法+switch呢?还是每个事件写一个方法?

//1. one function + switch patternclass OneFunSwitch extends Component {handleChange = (e)=>{let {type} = e.target.dataset;/**  switch--case--default  **/}render(){return(<div><button onClick={this.handleChange} data-type="name">修改名称</button><button onClick={this.handleChange} data-type="age">修改年龄</button><button onClick={this.handleChange} data-type="submit">提交</button>{/** ...more evenet **/}</div>)}
}// 2. multiple functon patternclass MultipleFun extends Component {handleNameChange = ()=>{}handleAgeChange = ()=>{}handleSubmit = ()=>{}render(){return(<div><button onClick={this.handleNameChange} >修改名称</button><button onClick={this.handleAgeChange} >修改年龄</button><button onClick={this.handleSubmit} >提交</button>{/** ...more evenet **/}</div>)}
}

上面2钟方式,你在开发中经常使用哪一种?还是说看心情来,<_>

2. 通过那种方式进行事件绑定和参数传递?主要有以下几种方式

// 1. 使用 es6 arrow function
class ArrowFun extends React.Component {click(){ /** click... **/ }render(){return(<div><button onClick={()=>this.click()}>click</button><button onClick={this.click.bind(this,{})}>click</button></div>)}
}
// 以上2种方法等效,看上去这种写法还是很不错的,但是因为函数无法像数据那样走diff算法,所以组件会做浪费的渲染// 2. 通过构造函数进行this绑定
class ArrowFun extends React.Component {constructor(props){super(props);this.click = this.click.bind(this);}click(){ /** click... **/ }render(){return(<div><button onClick={this.click}>click</button></div>)}
}
// 相对第一种,是解决了多余render问题,但是好像没啥好的办法进行参数的传递,同时还多了一行代码。// 3. 使用class-properties
class ArrowFun extends React.Component {constructor(props){super(props);}click =()=>{}render(){return(<div><button onClick={this.click}>click</button></div>)}
}
// 相对前2种,貌似这种最好了;但是需要注意的是1. 类属性还不是es规范,2.同样面临参数传递的问题

好吧,该用哪一种呢?任意用吗?

~~~未完待续

React中那些纠结你的地方(一)相关推荐

  1. 如何在React中做到jQuery-free

    前言 前些天在订阅的公众号中看到了以前阮一峰老师写过的一篇文章,「如何做到 jQuery-free?」.这篇文章讨论的问题,在今天来看仍不过时,其中的一些点的讨论主要是面向新内核现代浏览器的标准 DO ...

  2. react中纯函数_如何在纯React中创建电子邮件芯片

    react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...

  3. [项目过程中所遇到的各种问题记录]部署篇——项目部署过程中那些纠结的问题-SQLServer...

    前一篇文章说了些有关IIS的,这篇则是说SQLServer的,相比IIS来说,SQLServer的配置过程中问题就少了许多,而且都比较有针对性,下面开始记录: 注:由于实际项目的开发都是基于SQL20 ...

  4. [译] How to NOT React:React 中常见的反模式与陷阱

    原文地址:How to NOT React: Common Anti-Patterns and Gotchas in React 原文作者:NeONBRAND 译文出自:掘金翻译计划 本文永久链接:g ...

  5. props写法_好程序员web前端培训React中事件的写法总结

    好程序员web前端培训React中事件的写法总结,React的事件处理和DOM元素很相似,但是语法上是有不同的: 1.react事件采用驼峰命名法,而不是纯小写. 驼峰命名法(camelCase):命 ...

  6. 初识react(四) react中异步解决方案之 redux-saga

    回顾 初识react(一) 揭开jsx语法和虚拟DOM面纱 初识react(二) 实现一个简版的html redux.js的demo 初识react(三)在 react中使用redux来实现简版计数器 ...

  7. react 中渲染html_如何在React中识别和解决浪费的渲染

    react 中渲染html by Nayeem Reza 通过Nayeem Reza 如何在React中识别和解决浪费的渲染 (How to identify and resolve wasted r ...

  8. react中样式冲突_如何通过React中的样式使您的应用漂亮

    react中样式冲突 by Vinh Le 由Vinh Le 如何通过React中的样式使您的应用漂亮 (How to make your apps pretty with styling in Re ...

  9. react中的状态机_在基于状态图的状态机上使用React的模式

    react中的状态机 by Shawn McKay 肖恩·麦凯(Shawn McKay) 在基于状态图的状态机上使用React的模式 (Patterns for using React with St ...

最新文章

  1. mysql设置text字段为not null,并且没有默认值,插入报错:doesn't have a default value
  2. Echarts后台option对象
  3. 使用numpy出现DeprecationWarning: The normed argument is ignored when density is provided. 解决方法忽略警告的方法
  4. 形态学操作——腐蚀与膨胀
  5. MyBatis缓存机制学习
  6. 什么是阿里云服务器系统盘和数据盘?
  7. 3 手风琴翻折效果_vue3+typeScript 手风琴(每周一个小组件)
  8. Ceph分布式存储系列(六):对象存储、块存储、文件存储的区别和优缺点
  9. 解除隐藏文件cmd命令_cmd命令怎么隐藏电脑上的文件
  10. uniapp中使用微信登录app
  11. 《程序员修炼之道》读书笔记(4):注重实效的偏执(防卫策略)
  12. Sass 变量 $var、@import与Partials
  13. javaEE练习(商城练习)
  14. Windows下基础免杀技术
  15. 在最熟知的芯片,解析最不为人知的秘密--Nordic的蓝牙芯片nRF52832。
  16. 拒绝无用功,封装一个通用的PopupWindow
  17. 华为称手机流畅度不由单一部件决定
  18. Java Reflection (JAVA反射) 选择自 leek2000 的 Blog
  19. 微博5亿用户数据泄露:通讯录匹配机制是罪魁祸首!
  20. 转摘-谈谈后端业务系统的微服务化改造

热门文章

  1. CentOS6.x 下 LNMP环境搭建(二、安装 Nginx)
  2. 纯 js 让浏览器不缓存 ajax 请求
  3. Lintcode61 Search for a Range solution 题解
  4. Problem 71:Ordered fractions
  5. 理解 JMeter 聚合报告(Aggregate Report)
  6. Linux常用命令3
  7. 终于研究出如何设置新版paypal付款时汇率损失方的问题了
  8. C++ 著名程序库 概览
  9. C#-老生常谈的 值类型与引用类型
  10. [转载] 七龙珠第一部——第072话 恶魔的厕所