Оптимальный

во всех смыслах

Татьяна Бабич

Роман Фазульянов

Руководитель Frontend - направления

Ведущий эксперт

Development speed

ES2015

Virtual DOM

JSX

Components development

REACT - only View

Business logic

DATA FLOW

IDE

Нуждается ли REACT в оптимизации?

А как насчет подхода к разработке и кода?

ES2015 + IDE

import React from 'react';
class Test extends React.Component { 
   props;
   state = { 
      greeting: 'Hello'
   };
   render() { 
      return <div>{this.state.greeting},
{this.props.name}</div>;
   } 
} 
Test.defaultProps = { 
   name: 'Roman'
} 
import React from 'react';
class Test extends React.Component { 
   /** @type {TestProps} */
   props;
   static defaultProps = new TestProps();
   /** @type {TestState} */
   state;
   constructor(props) { 
      super(props);
      this.state = new TestState();
      //стейт для конкретного экземпляра
   } 
   render() { 
      return <div>{this.state.greeting},
{this.props.name}</div>;
   } 
} 

Хранение данных

store

state

this

DATA FLOW

dispatch({
   type: types.CLEAR_RESULTS
});
dispatch({
   type: types.CLEAR_CURRENT_MODEL
});
dispatch({
   type: types.CLEAR_CURRENT_SELECTED
});
dispatch({
   type: types.SHOW_LOADER
});
dispatch({
   type: types.START_NEW_SEARCH
});

setState

onChange = (event) => { 
   /** @type {EditState} */
   var state = /** @type {EditState} */{};
   state.isPure = false;
   this.setState(state);
};
onChange = (event) => { 
   if(this.state.isPure) { 
      /** @type {EditState} */
      var state = /**@type {EditState}*/{};
      state.isPure = false;
      this.setState(state);
   } 
};

 *.bind(this)

onClick(event) {/*код*/};

render() { 
  return (
     <div 
        onClick={(event) => 
         this.onClick.bind(this)(event)}>
        {this.props.children}
     </div>
  );
}
onClick(event) {/*код*/};

constructor(props) { 
   super(props);
   this.onClick  =
   this.onClick.bind(this);
} 
render() { 
   return (
      <div onClick={this.onClick}>
         {this.props.children}
      </div>
   );
} 
onClick = (event) => {
 /*код*/
};

Facebook way

Best way

No comments way

 *.bind(this)

Facebook way

Best way

No comments way

и еще пара плюшек

Спасибо за внимание!

Татьяна Бабич

simbirsoft.com

Роман Фазульянов

tatyana.babich@simbirsoft.com

https://slides.com/tatyana_babich/react_way/

Оптимальный во всех смыслах

By tatyana_babich

Оптимальный во всех смыслах

  • 1,465