Skip to content

Instantly share code, notes, and snippets.

View vzaidman's full-sized avatar

Vitali Zaidman vzaidman

View GitHub Profile
const Main = React.memo(({onClick, style, children, items}) => {
const content = getContent({items});
return (
<div style={style} onClick={onClick}>
{content}
{children}
</div>
);
})
export default function App(props) {
return React.createElement(
"div",
{className: "App"},
React.createElement(Header, null),
React.createElement(Main, {userName: props.userName})
);
}
const Main = React.memo(({onClick, style, children, items}) => {
const content = getContent({items});
return (
<div style={style} onClick={onClick}>
{content}
{children}
</div>
);
})
@vzaidman
vzaidman / App.jsx
Last active September 19, 2020 07:48
When App Re-renders, Main Also Re-renders.
const Main = ({userName}) => {
const content = heavyCalculation({userName});
return (
<div className="Main">
{content}
</div>
);
}
export default function App({userName}) {
@vzaidman
vzaidman / react-jsx-and-create-element.jsx
Created August 28, 2020 12:27
React Create Eelement
const SomeReactElement = <SomeReactComponent/>
// equivalent to:
const SomeReactElement = React.createElement(SomeReactComponent)
@vzaidman
vzaidman / useEventCallback.jsx
Last active January 31, 2020 11:38
Advanced React- useCallback() Invalidates Too Often in Practice #14099
/*
Notice: This hook would be problematic in concurrent mode:
https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback
*/
function useEventCallback(fn, dependencies) {
const ref = React.useRef(() => {
throw new Error('Cannot call an event handler while rendering.');
});
React.useEffect(() => {
ref.current = fn;
@vzaidman
vzaidman / index.jsx
Last active May 25, 2020 15:59
Advanced React- useCallback() Invalidates Too Often in Practice #14099
const PureHeavyComponent = React.memo(({onClick}) => {
console.log('pure heavy component!');
return (
<div onClick={onClick}>
//Many Other React elements are created here
</div>
);
});
class Parent extends React.Component {
@vzaidman
vzaidman / index.jsx
Last active May 25, 2020 16:00
Advanced React- useCallback() Invalidates Too Often in Practice #14099
const PureHeavyComponent = React.memo(({onClick}) => {
console.log('pure heavy component!');
return (
<div onClick={onClick}>
//Many Other React elements are created here
</div>
);
});
const Parent = () => {
@vzaidman
vzaidman / index.jsx
Last active May 25, 2020 16:01
Advanced React- useCallback() Invalidates Too Often in Practice #14099
const PureHeavyComponent = React.memo(({onClick}) => {
console.log('pure heavy component!');
return (
<div onClick={onClick}>
//Many Other React elements are created here
</div>
);
});
const Parent = () => {
@vzaidman
vzaidman / index.jsx
Last active May 23, 2020 07:41
Advanced React- useCallback() Invalidates Too Often in Practice #14099
const PureHeavyComponent = React.memo(({onClick}) => {
console.log('pure heavy component!');
return (
<div onClick={onClick}>
//Many Other React elements are created here
</div>
);
});
const Parent = () => {