React는 놀라울 정도로 강력하지만 이를 마스터한다는 것은 기본을 뛰어넘어 개발을 간소화하기 위해 잘 알려지지 않은 몇 가지 트릭을 배우는 것을 의미합니다. 다음은 생산성을 높이고 더 깨끗하고 효과적인 코드를 작성하는 데 도움이 되는 개인적으로 좋아하는 20가지 React 트릭의 요약입니다. 예시를 바로 살펴보겠습니다!
단락 평가를 사용한 조건부 렌더링에 대해 장황한 if 문을 사용하지 마세요.
{isLoading && <Spinner />}
이렇게 하면
클래스 이름 라이브러리를 사용하면 클래스를 조건부로 쉽게 적용할 수 있습니다.
npm install classnames
import classNames from 'classnames'; const buttonClass = classNames({ 'btn': true, 'btn-primary': isPrimary, 'btn-secondary': !isPrimary, }); <button className={buttonClass}>Click Me</button>
계산 비용이 많이 든다면 메모해 두어 React가 불필요하게 재계산하지 않도록 하세요.
const sortedData = useMemo(() => data.sort(), [data]);
데이터가 변경될 때만 sortedData를 다시 계산합니다.
입력 변경 사항을 디바운싱하여 지속적인 재렌더링을 방지하세요.
const [value, setValue] = useState(''); const [debouncedValue, setDebouncedValue] = useState(''); useEffect(() => { const handler = setTimeout(() => setDebouncedValue(value), 500); return () => clearTimeout(handler); }, [value]); <input value={value} onChange={(e) => setValue(e.target.value)} />
사용자 정의 후크에 로직을 캡슐화하여 구성 요소 전체에서 재사용합니다.
function useFetch(url) { const [data, setData] = useState(null); useEffect(() => { fetch(url).then(res => res.json()).then(setData); }, [url]); return data; } const Component = () => { const data = useFetch('/api/data'); return <div>{data ? JSON.stringify(data) : 'Loading...'}</div>; };
구성 요소를 분할하여 로딩 시간을 최적화하세요.
const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <React.Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </React.Suspense> ); }
이전 상태 값에 액세스하려면 useRef를 사용하세요.
const [count, setCount] = useState(0); const prevCount = useRef(count); useEffect(() => { prevCount.current = count; }, [count]); console.log(`Previous: ${prevCount.current}, Current: ${count}`);
변경할 필요가 없는 함수라면 useCallback으로 메모하세요.
const increment = useCallback(() => setCount(count + 1), [count]);
함수 매개변수에서 소품을 바로 분해하세요.
const User = ({ name, age }) => ( <div>{name} is {age} years old</div> );
추가 DOM 노드를 추가하지 않고 요소를 래핑합니다.
<> <p>Paragraph 1</p> <p>Paragraph 2</p> </>
하위 구성 요소의 오류를 잡아 전체 앱이 충돌하는 것을 방지하세요.
class ErrorBoundary extends React.Component { state = { hasError: false }; static getDerivedStateFromError() { return { hasError: true }; } render() { if (this.state.hasError) return <h1>Something went wrong.</h1>; return this.props.children; } }
소품 유형을 정의하여 버그를 조기에 잡아보세요.
{isLoading && <Spinner />}
복잡한 상태 로직의 경우 useReducer가 더 효율적일 수 있습니다.
npm install classnames
DOM 업데이트 후 페인트 전에 효과를 실행합니다.
import classNames from 'classnames'; const buttonClass = classNames({ 'btn': true, 'btn-primary': isPrimary, 'btn-secondary': !isPrimary, }); <button className={buttonClass}>Click Me</button>
prop 드릴링 없이 전역 상태를 생성합니다.
const sortedData = useMemo(() => data.sort(), [data]);
함수를 인라인으로 정의하면 다시 렌더링됩니다. 대신 외부에서 정의하세요.
const [value, setValue] = useState(''); const [debouncedValue, setDebouncedValue] = useState(''); useEffect(() => { const handler = setTimeout(() => setDebouncedValue(value), 500); return () => clearTimeout(handler); }, [value]); <input value={value} onChange={(e) => setValue(e.target.value)} />
null 또는 정의되지 않은 값을 적절하게 처리합니다.
function useFetch(url) { const [data, setData] = useState(null); useEffect(() => { fetch(url).then(res => res.json()).then(setData); }, [url]); return data; } const Component = () => { const data = useFetch('/api/data'); return <div>{data ? JSON.stringify(data) : 'Loading...'}</div>; };
목록을 렌더링할 때는 항상 고유 키를 사용하세요.
const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <React.Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </React.Suspense> ); }
이름이 지정된 내보내기를 사용하면 특정 구성요소를 더 쉽게 가져올 수 있습니다.
const [count, setCount] = useState(0); const prevCount = useRef(count); useEffect(() => { prevCount.current = count; }, [count]); console.log(`Previous: ${prevCount.current}, Current: ${count}`);
그런 다음 필요에 따라 가져옵니다.
const increment = useCallback(() => setCount(count + 1), [count]);
추가 로직을 추가하려면 구성 요소를 HOC로 래핑하세요.
const User = ({ name, age }) => ( <div>{name} is {age} years old</div> );
이러한 요령을 익히면 더욱 간결하고 읽기 쉽고 효율적인 React 코드를 작성하는 데 도움이 됩니다! 즐거운 코딩하세요!
위 내용은 모든 개발자가 알아야 할 필수 React 트릭의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!