Skip to content

Instantly share code, notes, and snippets.

View mohandere's full-sized avatar
🎯
Focusing

Mohan Dere mohandere

🎯
Focusing
View GitHub Profile
import hoistNonReactStatic from 'hoist-non-react-statics';
const withSearch = (WrappedComponent) => {
class WithSearch extends React.Component {/*...*/}
hoistNonReactStatic(EithSearch, WrappedComponent);
return WithSearch;
}
// Define a static method
ProductsList.staticMethod = function() {/*...*/}
render() {
// A new version of ProductsListWithSearch is created on every render
const ProductsListWithSearch = withSearch(ProductsList);
// That causes the entire subtree to unmount/remount each time!
return <ProductsListWithSearch />;
}
@mohandere
mohandere / hoc-withSearch.js
Last active May 12, 2019 14:56
Higher-Order Components
const withSearch = WrappedComponent => {
class WithSearch extends React.Component {
state = {
searchTerm: ""
};
handleSearch = event => {
this.setState({ searchTerm: event.target.value });
};
render() {
@mohandere
mohandere / hoc-ProductsList.js
Last active May 12, 2019 14:53
Higher-Order Component
const ProductsList = (props) => {
let { data: products } = props;
return (
<div>
<div>
<div>
<h2>Products</h2>
</div>
</div>
<div>
@mohandere
mohandere / hoc-ProductsWithSearch.js
Last active May 12, 2019 14:34
Higher-Order Component
import products from './products.json'
class ProductsListWithSearch extends React.PureComponent {
state = {
searchTerm: ''
}
handleSearch = event => {
this.setState({ searchTerm: event.target.value })
}
render() {
@mohandere
mohandere / hoc-withSearch-full-example.js
Last active May 12, 2019 14:26
Higher-Order Components
const ProductCard = props => {
return (
<div>
<hr />
<p>
<b>Title:</b> {props.title}
</p>
<p>
<b>Style:</b> {props.style}
</p>
const ProductCard = props => {
return (
<div className="product">
<p>
<b>Title:</b> {props.title}
</p>
<p>
<b>Style:</b> {props.style}
</p>
<p>
@mohandere
mohandere / hoc-ppHOC.js
Last active May 7, 2019 14:21
Higher Order Components
const propsProxyHOC = (WraapperComponent) => {
return class extends React.Component {
state = {
count: 0
}
render() {
// Pass thru the props that the HOC receives
return <WraapperComponent {...this.props} {...this.state} />
}
}
@mohandere
mohandere / hoc-hof.js
Created May 4, 2019 11:25
Higher-Order Components
// Example #1
const twice = (f, v) => f(f(v))
const add3 = v => v + 3
twice(add3, 7) // 13
// Example #2
const filter = (predicate, xs) => xs.filter(predicate)
const is = type => x => Object(x) instanceof type
@mohandere
mohandere / hoc-signature.js
Last active May 4, 2019 11:24
Higher-Order Components
import React from 'react'
const higherOrderComponent = WrappedComponent => {
class HOC extends React.Component {
render() {
return <WrappedComponent />
}
}
return HOC
}