This package has been deprecated

Author message:

just use useMemo()

@lunit/use-state-memo
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

Sample Codes

https://lunit-io.github.io/opt-tool-frontend

Stories

Tests

__tests__/useStateMemo.test.ts

import { renderHook } from '@testing-library/react-hooks';
import { useStateMemo } from '../';

//tslint:disable:react-hooks-nesting
describe('useStateMemo()', () => {
  const arr1: string[] = [];
  const arr2: string[] = [];
  
  test('memo가 변경되어야 한다', () => {
    const {result, rerender} = renderHook(({data}) => useStateMemo(data), {
      initialProps: {
        data: {
          a: 1,
          b: 2,
          c: 3,
        },
      },
    });
    
    const a = result.current;
    
    rerender({
      data: {
        a: 2,
        b: 2,
        c: 3,
      },
    });
    
    const b = result.current;
    
    expect(a).not.toBe(b);
  });
  
  test('memo가 변경되지 않아야 한다', () => {
    const {result, rerender} = renderHook(({data}) => useStateMemo(data), {
      initialProps: {
        data: {
          a: 1,
          b: 2,
          c: 3,
        },
      },
    });
    
    const a = result.current;
    
    rerender({
      data: {
        a: 1,
        b: 2,
        c: 3,
      },
    });
    
    const b = result.current;
    
    expect(a).toBe(b);
  });
  
  test('reference의 변경으로 memo가 변경되어야 한다', () => {
    const {result, rerender} = renderHook(({data}) => useStateMemo(data), {
      initialProps: {
        data: {
          a: arr1,
        },
      },
    });
    
    const a = result.current;
    
    rerender({
      data: {
        a: arr2,
      },
    });
    
    const b = result.current;
    
    expect(a).not.toBe(b);
  });
});

__tests__/useStateMemo.test.ts

import { renderHook } from '@testing-library/react-hooks';
import { useStateMemo } from '../';

//tslint:disable:react-hooks-nesting
describe('useStateMemo()', () => {
  const arr1: string[] = [];
  const arr2: string[] = [];
  
  test('memo가 변경되어야 한다', () => {
    const {result, rerender} = renderHook(({data}) => useStateMemo(data), {
      initialProps: {
        data: {
          a: 1,
          b: 2,
          c: 3,
        },
      },
    });
    
    const a = result.current;
    
    rerender({
      data: {
        a: 2,
        b: 2,
        c: 3,
      },
    });
    
    const b = result.current;
    
    expect(a).not.toBe(b);
  });
  
  test('memo가 변경되지 않아야 한다', () => {
    const {result, rerender} = renderHook(({data}) => useStateMemo(data), {
      initialProps: {
        data: {
          a: 1,
          b: 2,
          c: 3,
        },
      },
    });
    
    const a = result.current;
    
    rerender({
      data: {
        a: 1,
        b: 2,
        c: 3,
      },
    });
    
    const b = result.current;
    
    expect(a).toBe(b);
  });
  
  test('reference의 변경으로 memo가 변경되어야 한다', () => {
    const {result, rerender} = renderHook(({data}) => useStateMemo(data), {
      initialProps: {
        data: {
          a: arr1,
        },
      },
    });
    
    const a = result.current;
    
    rerender({
      data: {
        a: arr2,
      },
    });
    
    const b = result.current;
    
    expect(a).not.toBe(b);
  });
});

Readme

Keywords

none

Package Sidebar

Install

npm i @lunit/use-state-memo

Weekly Downloads

0

Version

0.1.0

License

MIT

Unpacked Size

9.38 kB

Total Files

4

Last publish

Collaborators

  • takhyunkim
  • deminoth
  • jyseo