关于React的小结

2019-01-11  本文已影响0人  Mr君

React.Component与React.PureComponent的区别

  1. React.PureComponent通过propsstate的浅对比来实现shouldComponentUpdate,当数据包含复杂数据结构的时候,可能会因深层的数据不一致,而产生错误判定(即,视图没有更新),一般在简单的propsstate可以采取PureComponent,或当知道数据改变时强制更新视图forceUpdate
  2. propsstate相同的情况下React.PureComponent可以减少render的次数,性能更好。也可以减少shouldComponentUpdate函数的书写,节省代码。
  3. React.PureComponentshouldComponentUpate()会忽略整个组件的子级。请确保所有的子级组件也是Pure

关于函数属性

// 1
<MyInput onChange={e => this.props.update(e.target.value)} />
// 2
update(e) {
  this.props.update(e.target.value)
}
render() {
  return <MyInput onChange={this.update.bind(this)} />
}

上面的写法容易产生的问题:
由于每次 render 操作 MyInput 组件的 onChange 属性都会返回一个新的函数,由于引用不一样,所以父组件的 render 也会导致 MyInput 组件的 render ,即使没有任何改动,所以需要尽量避免这样的写法,采用写法二。

update = (e) => {
  this.props.update(e.target.value)
}
render() {
  return <MyInput onChange={this.update} />
}
上一篇 下一篇

猜你喜欢

热点阅读