Skip to content

Commit 6bc19ae

Browse files
ssi02014manudeli
andauthored
refactor: seperate the usePrevious module (#1208)
# Overview closed: #1166 Seperate the module as discussed in the issue above 🙏 ## PR Checklist - [x] I did below actions if need 1. I read the [Contributing Guide](https://github.com/toss/suspensive/blob/main/CONTRIBUTING.md) 2. I added documents and tests. --------- Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent fcbb06f commit 6bc19ae

File tree

5 files changed

+40
-33
lines changed

5 files changed

+40
-33
lines changed

.changeset/weak-grapes-act.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@suspensive/react": patch
3+
---
4+
5+
refactor: seperate the usePrevious module

packages/react/src/hooks/useIsChanged.spec.ts

-22
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,6 @@
11
import { renderHook } from '@testing-library/react'
2-
import { usePrevious } from './useIsChanged'
32
import { useIsChanged } from '.'
43

5-
describe('usePrevious', () => {
6-
it('should return value given as an argument in the previous rendering', () => {
7-
const { result, rerender } = renderHook<{ now: number; prev: number }, { count: number }>(
8-
({ count }) => ({ prev: usePrevious(count), now: count }),
9-
{ initialProps: { count: 0 } }
10-
)
11-
12-
rerender({ count: 1 })
13-
expect(result.current.prev).toBe(0)
14-
expect(result.current.now).toBe(1)
15-
16-
rerender({ count: 2 })
17-
expect(result.current.prev).toBe(1)
18-
expect(result.current.now).toBe(2)
19-
20-
rerender({ count: 3 })
21-
expect(result.current.prev).toBe(2)
22-
expect(result.current.now).toBe(3)
23-
})
24-
})
25-
264
describe('useIsChanged', () => {
275
it('should return boolean that express if given argument is changed value on previous render', () => {
286
const { result, rerender } = renderHook<boolean, { count: number }>(({ count }) => useIsChanged(count), {
+1-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
import { useEffect, useRef } from 'react'
2-
3-
export const usePrevious = <TValue>(value: TValue): TValue => {
4-
const ref = useRef<TValue>(value)
5-
6-
useEffect(() => {
7-
ref.current = value
8-
}, [value])
9-
10-
return ref.current
11-
}
1+
import { usePrevious } from './usePrevious'
122

133
export const useIsChanged = (value: unknown) => usePrevious(value) !== value
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { renderHook } from '@testing-library/react'
2+
import { usePrevious } from './usePrevious'
3+
4+
describe('usePrevious', () => {
5+
it('should return value given as an argument in the previous rendering', () => {
6+
const { result, rerender } = renderHook<{ now: number; prev: number }, { count: number }>(
7+
({ count }) => ({ prev: usePrevious(count), now: count }),
8+
{ initialProps: { count: 0 } }
9+
)
10+
11+
rerender({ count: 1 })
12+
expect(result.current.prev).toBe(0)
13+
expect(result.current.now).toBe(1)
14+
15+
rerender({ count: 2 })
16+
expect(result.current.prev).toBe(1)
17+
expect(result.current.now).toBe(2)
18+
19+
rerender({ count: 3 })
20+
expect(result.current.prev).toBe(2)
21+
expect(result.current.now).toBe(3)
22+
})
23+
})
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { useEffect, useRef } from 'react'
2+
3+
export const usePrevious = <TValue>(value: TValue): TValue => {
4+
const ref = useRef<TValue>(value)
5+
6+
useEffect(() => {
7+
ref.current = value
8+
}, [value])
9+
10+
return ref.current
11+
}

0 commit comments

Comments
 (0)