项目坑点

Node MVC重定向

使用Node Mvc时重定向不写在页面的js里,而是应该在router对应的controller里进行ctx.redirect,阻止多余的处理发生

Koa router

使用Router时匹配规则会重上往下匹配,如果上面有index/test/:id则不会进入下面的index/test/next

Classnames

react中进行动态的classname添加时可以使用classnames

pureComponent

适当使用pureComponent减少render操作次数

组件中bind

如果每次都在 render 里面的 jsx 去 bind 这个方法,会消耗性能,因为每次bind都会返回一个新函数,重复创建静态函数肯定是不合适的(闭包也是这样,但bind内部有一系列的算法,比闭包复杂多了)

setInterval间隔不对

使用setTimeout递归模拟setInterval

页面间切换导致定时器出现延时

判断是否停留在当前页面

1
2
3
let hiddenProperty = 'hidden' in document ? 'hidden' :
'webkitHidden' in document ? 'webkitHidden' :
null;

inline-block

html中代码之间的空格和回车,导致使用nline-block的两个元素会出现莫名的空白,以及移动端行距莫名扩大问题

不用inline-block或者负margin,font-size等等

float与border

flout元素加了border之后,会导致高度变高,换行的float元素会与多出来的border对齐

用box-shadow或者把border加在其他位置

render与setState

不要在render中进行setState操作,包括如果你在render中调用了渲染元素的方法,在该方法中也不要使用setState。因为setState会触发render,导致死循环

ios的hover

ios设备上只有可点击元素才有点击事件,当你使用hover时,你的第一次点击即触发hover是可以成功的,但是如果你点击了一个没有点击事件的元素,那么你的hover事件将会继续保留。一个比较暴力的解决方案是给其他元素加一个onclick="void(0)"

dom对象是原生的还是jq

instanceof jQuery 或者 Object[0],但是前者在没有jq的时候会报jQuery undefined,后者array或string等也符合条件,不过仅仅是用来单纯的区分这两者的话足够了

Author: AddOneG
Link: http://yoursite.com/2018/07/25/项目坑点/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.