Skip to content

Instantly share code, notes, and snippets.

View teimurjan's full-sized avatar
:electron:

Teimur Gasanov teimurjan

:electron:
View GitHub Profile
@teimurjan
teimurjan / arrow-instead-of-bind.js
Created May 21, 2018 06:52
blog-react-applications-optimization
handleClick = todoId => {
this.setState({
[todoId]: { clicked: true }
});
};
@teimurjan
teimurjan / bind-in-constructor.js
Created May 21, 2018 06:49
blog-react-applications-optimization
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}
@teimurjan
teimurjan / bind-in-render.js
Created May 21, 2018 06:48
blog-react-applications-optimization
render() {
return (
<ul>
{this.props.todos.map(todo => (
<Todo
todo={todo}
onClick={this.props.handleClick.bind(this)}
/>
))}
</ul>
@teimurjan
teimurjan / arrow-in-child.js
Last active May 21, 2018 06:55
blog-react-applications-optimization
class Todo extends React.Component {
handleClick = e => {
this.props.onClick(this.props.todo.id);
};
render() {
return (
<li className="todo" onClick={this.handleClick}>
{this.props.todo}
</li>
@teimurjan
teimurjan / arrow-in-render-todo.js
Last active May 21, 2018 06:56
blog-react-applications-optimization
class Todo extends React.Component {
render() {
return (
<li className="todo" onClick={this.props.onClick}>
{this.props.todo}
</li>
);
}
}
@teimurjan
teimurjan / arrow-in-render-list.js
Created May 21, 2018 06:44
blog-react-applications-optimization
render() {
return (
<ul>
{this.props.todos.map(todo => (
<Todo todo={todo} onClick={() => this.props.onTodoClick(todo.id)} />
))}
</ul>
);
}
@teimurjan
teimurjan / shallow-equal.js
Created May 21, 2018 06:41
blog-react-applications-optimization
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
arr1 === arr2; // false
const obj1 = { foo: "bar" };
const obj2 = { foo: "bar" };
obj1 === obj2; // false
@teimurjan
teimurjan / pure-component-scu.js
Created May 21, 2018 06:37
blog-react-applications-optimization
export default class extends React.PureComponent {
shouldComponentUpdate(nextProps, nextState) {
return !(
shallowEqual(nextProps, this.props) && shallowEqual(nextState, this.state)
);
}
}
@teimurjan
teimurjan / component-scu.js
Last active May 21, 2018 06:37
blog-react-applications-optimization
export default class extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
return true;
}
}
@teimurjan
teimurjan / home-container.js
Created May 21, 2018 06:30
blog-react-applications-optimization
// home-container.js
import Loadable from "react-loadable";
import Spinner from "../Common/Spinner";
export default Loadable({
loader: () => import("./Home" /*webpackChunkName: 'home' */),
loading: Spinner
});