react
react 관련 자료를 모아 둔다
문서
[Experiment] Context Selectors
Guide
21 Best Practices for a Clean React Project
- Use JSX ShortHand
- Use Ternary Operators
- Take Advantage of Object Literals
- Use Fragments
- Don’t Define a Function Inside Render
- Use Memo
- Put CSS in JavaScript
- Use Object Destructuring
- String Props Don’t Need Curly Braces
- Remove JS Code From JSX
- Use Template Literals
- Import in Order
- Use Implicit return
- Component Naming
- Reserved Prop Naming
- Quotes
- Prop Naming
- JSX in Parentheses
- Self-Closing Tags
- Underscore in Method Name
- Alt Prop
1. Use JSX ShortHand
Bad
return <Navbar showTitle={true} />
Good
return <Navbar showTitle />
성능 최적화
useMemo, useCallback을 언제 써야되나?
- counter 100 미만에서는 1ms 정도의 향상이다
Performance Profiling Your React App
이 글은 Christian Nwamba의 Performance Profiling Your React App을 번역한 글
React 렌더링 이해 및 최적화 (With Hook)
- shouldComponentUpdate
- React.PureComponent
- Hook
Preventing rerenders with React.memo and useContext hook
예시 codesandbox
React + D3.js: Balancing Performance & Developer Experience
- d3 의 영향을 주는 Data 나 event 변경 시만 d3 를 업데이트하는 방법을 이야기하고 있다
- useMemo()
- 가상화된 List
- React.PureComponent
- Caching functions
- Reselect selectors 사용하기
- Web worker
- Lazy Loading
- React.memo()
- useCallback()
- shouldComponentUpdate()
Event
e.persist()
주의 v17부터 e.persist()는 SyntheticEvent가 더 이상 풀링되지 않기 때문에 아무런 동작을 하지 않습니다.
pre-rendered
[React] react-snap으로 pre-rendered 리액트 앱 만들기
Pre-Rendering into Static HTML Files
useState
를 사용하니Error: TypeError: Object(...) is not a function
발생
Hook
[번역] 심층 분석: React Hook은 실제로 어떻게 동작할까?
- 이유 #1: 클래스는 헷갈린다.
- 이유 #2: 컴포넌트의 상태와 연관된 로직을 재사용하기 어렵다.
- 이유 #3: 복잡한 컴포넌트는 이해하기 어렵다.
- 이유 #4: 성능
- 이유 #5: Funclass가 더 간결하다
- 숨어있는 사이드 이펙트
- 늘어난 API
- 부족한 선언성
- 모두 React에 묶임
- 뭔가 잘못된 느낌
유용한 hook
- 내부적으로 IntersectionObserver 사용
- polyfill
require('intersection-observer')
- react-is-visible 검토했으나 IntersectionObserver 를 사용하는게 심플하다.
ref 를 받지 않도록 수정해서 사용
function useOnScreen<T extends Element>(rootMargin: string = '0px'): [MutableRefObject<T>, boolean] {
const ref: any = useRef<HTMLDivElement>()
return [ref, isIntersecting]
}
18 변경 점
windowing
lib
글들
- 다량의 데이터로 list를 만들경우 react-window라는 라이브러리로 windowing을 하면 사용자 경험을 증진시키는 데 좋은 영향을 준다.