Skip to content

Instantly share code, notes, and snippets.

View vzaidman's full-sized avatar

Vitali Zaidman vzaidman

View GitHub Profile
@vzaidman
vzaidman / useState-as-a-ref.jsx
Last active January 14, 2021 19:08
useState-as-a-ref
const [node, setRef] = useState(null);
useEffect(() => {
if (!node) {
console.log('unmounted!');
return null;
}
console.log('mounted');
@vzaidman
vzaidman / useRefWithCallback.jsx
Last active December 22, 2023 17:13
useRefWithCallback
// the hook
function useRefWithCallback(onMount, onUnmount) {
const nodeRef = useRef(null);
const setRef = useCallback(node => {
if (nodeRef.current) {
onUnmount(nodeRef.current);
}
nodeRef.current = node;
@vzaidman
vzaidman / useStateRef.jsx
Last active January 17, 2021 14:34
useStateRef
// the hook
function useStateRef(processNode) {
const [node, setNode] = useState(null);
const setRef = useCallback(newNode => {
setNode(processNode(newNode));
}, [processNode]);
return [node, setRef];
}
// how it's used
@vzaidman
vzaidman / babel.config.js
Created November 24, 2020 11:14
How to test two React versions
module.exports = require('../babel.config')
@vzaidman
vzaidman / jest.config.js
Created November 24, 2020 11:10
How to test two React versions
module.exports = {
...require('../jest.config'),
rootDir: '..',
cacheDirectory: '.cache/jest-cache-react-16',
moduleDirectories: [
'<rootDir>/test-react-16/node_modules',
'node_modules'
]
}
@vzaidman
vzaidman / package.json
Created November 24, 2020 11:05
How to test two React versions
{
"private": true,
"description": "Used to test react 16",
"dependencies": {
"react": "^16.14.0",
"react-dom": "npm:@hot-loader/react-dom@^16.14.0",
"react-is": "^16.13.1"
}
}
@vzaidman
vzaidman / jest.config.js
Created November 24, 2020 10:50
How to test two versions of React
module.exports = {
// ...
'setupFilesAfterEnv': [
'<rootDir>/jestSetup.js'
],
// ...
}
@vzaidman
vzaidman / jest.config.js
Last active November 24, 2020 10:42
How to test two versions of React
module.exports = {
'cacheDirectory': '.cache/jest-cache',
'modulePaths': ['<rootDir>/src'],
'setupFilesAfterEnv': ['<rootDir>/jestSetup.js'],
'moduleNameMapper': {
'^@welldone-software/why-did-you-render$': '<rootDir>/src/whyDidYouRender.js'
}
}
if(process.env.USE_REACT_16 === 'true'){
@vzaidman
vzaidman / jestSetup.js
Created November 24, 2020 09:38
How to test two react versions?
if(process.env.USE_REACT_16 === 'true'){
jest.mock('react', () => {
return jest.requireActual('react-16')
})
jest.mock('react-dom', () => {
return jest.requireActual('react-dom-16')
})
jest.mock('react-dom/test-utils', () => {
@vzaidman
vzaidman / package.json
Last active November 24, 2020 09:37
How to test who react versions?
{
// ...
"nollup": "^0.13.13",
"react": "^17.0.1",
// ↓↓ ↓↓↓ ↓↓↓↓↓↓↓↓
"react-16": "npm:react@^16.14.0",
"react-dom": "npm:@hot-loader/react-dom@^17.0.0",
// ↓↓ ↓↓↓ ↓↓↓↓↓↓↓↓
"react-dom-16": "npm:@hot-loader/react-dom@^16.14.0",
"react-hot-loader": "^4.13.0",