10.Decorator

1. log

  1. // 例子 10-1
  2.  
  3. class Math {
  4. @log
  5. add(a, b) {
  6. return a + b;
  7. }
  8. }

log 的实现可以参考 《ES6 系列之我们来聊聊装饰器》

2. autobind

  1. // 例子 10-2
  2.  
  3. class Toggle extends React.Component {
  4.  
  5. @autobind
  6. handleClick() {
  7. console.log(this)
  8. }
  9.  
  10. render() {
  11. return (
  12. <button onClick={this.handleClick}>
  13. button
  14. </button>
  15. );
  16. }
  17. }

autobind 的实现可以参考 《ES6 系列之我们来聊聊装饰器》

3. debounce

  1. // 例子 10-3
  2.  
  3. class Toggle extends React.Component {
  4.  
  5. @debounce(500, true)
  6. handleClick() {
  7. console.log('toggle')
  8. }
  9.  
  10. render() {
  11. return (
  12. <button onClick={this.handleClick}>
  13. button
  14. </button>
  15. );
  16. }
  17. }

debounce 的实现可以参考 《ES6 系列之我们来聊聊装饰器》

4. React 与 Redux

  1. // 例子 10-4
  2.  
  3. // good
  4. class MyReactComponent extends React.Component {}
  5.  
  6. export default connect(mapStateToProps, mapDispatchToProps)(MyReactComponent);
  7.  
  8. // better
  9. @connect(mapStateToProps, mapDispatchToProps)
  10. export default class MyReactComponent extends React.Component {};