모범 사례 및 패턴에 반응하여 코드 줄이기 - 2부
35075 단어 reduxjavascriptreactnativereact
시간을 낭비하지 않고 코드를 줄이기 위한 몇 가지 모범 사례와 패턴을 살펴보겠습니다. 가장 일반적인 것부터 시작하겠습니다.
구성 요소에 자식 소품이 없으면 자동으로 닫히는 태그를 사용하세요.
잘못된 코드:
return <Component></Component>;
좋은 코드:
return <Component />;
jsx 요소 내부에 함수를 작성하지 마십시오.
잘못된 코드:
return (
<div>
<button
onClick={() => {
setCount(1);
// ...
}}
>
Click
</button>
</div>
);
좋은 코드:
const onClick = useCallback(() => {
setCount(1);
// ...
}, [deps]);
return (
<div>
<button onClick={onClick}>Click</button>
</div>
);
여러 상태를 함께 업데이트해야 하는 경우 개체 상태를 사용합니다.
여러 setState 호출을 연속으로 사용하지 마십시오. 이것은 많은 불필요한 재렌더링으로 이어질 수 있는 일반적인 실수입니다. 단일 setState 호출을 사용하는 것이 좋습니다.
잘못된 코드:
const [count, setCount] = useState(0);
const [name, setName] = useState("");
const onClick = () => {
setTimeout(() => {
setName("John");
setCount(count + 1);
}, 1000);
};
좋은 코드:
const [state, setState] = useState({
count: 0,
name: "",
});
const onClick = () => {
setTimeout(() => {
setState((prevState) => ({
...prevState,
name: "John",
count: prevState.count + 1,
}));
}, 1000);
};
참고: React 18은 자동 일괄 처리를 추가하므로 반응 자체에서 여러 업데이트를 처리합니다.
styled-component를 사용하여 구성 요소의 스타일을 지정하십시오. 이는 JSX에서 CSS 작성을 피하는 좋은 방법이며 애플리케이션에 대한 CSS 설정을 피하는 데도 도움이 됩니다.
It's completely opinion based.
잘못된 코드:
return <div style={{ backgroundColor: "red" }}></div>;
좋은 코드:
const Container = styled.div`
background-color: ${({ theme }) => theme.colors.background};
padding: 1rem;
`;
더 나은 코드:
const getPrimaryColor = ({ theme }) => theme.colors.primary;
const getDefaultColor = ({ theme }) => theme.colors.secondary;
const Button = styled.button`
background-color: ${getPrimaryColor};
color: ${getDefaultColor};
`;
참고: 테마에서 색상 및 기타 스타일을 가져오고 스타일이 지정된 구성 요소에 전달하는 함수를 만듭니다. 이것은 또한 코드를 줄이는 데 도움이 됩니다.
클래스 기반 구성 요소를 피하고 대신 기능적 구성 요소를 사용하십시오.
잘못된 코드:
class Counter extends Component {
constructor(props) {
super(props);
this.state = {
count: 0,
};
this.onClick = this.onClick.bind(this);
}
onClick = () => {
this.setState({
count: this.state.count + 1,
});
};
render() {
return <button onClick>Click me</button>;
}
}
좋은 코드:
const Counter = () => {
const [count, setCount] = useState(0);
const onClick = () => setCount(count + 1);
return <button>Click me</button>;
};
참고: 기능 구성 요소는 개발 시간과 코드를 줄일 뿐만 아니라 생산 번들 크기도 줄입니다. 번들 크기를 거의 60%까지 줄입니다.
불필요한 재렌더링을 피하기 위한 React.memo.
잘못된 코드:
return (
<ui>
{items.map((item) => (
<Component>{item}</Component>
))}
</ui>
);
좋은 코드:
const MemoComponent = React.memo(Component);
return (
<ui>
{items.map((item) => (
<MemoComponent>{item}</MemoComponent>
))}
</ui>
);
참고:
React.memo()
를 현명하게 사용하십시오. 구성 요소가 종종 소품으로 다시 렌더링되는 메모를 사용하지 마십시오.JSX ShortHand를 사용하십시오. 부울 변수를 전달하기 위해 JSX 속기를 사용하십시오.
잘못된 코드:
return <button disabled={true}>Submit</button>;
좋은 코드:
return <button disabled>Submit</button>;
if-else 문 대신 삼항 연산자를 사용하십시오.
잘못된 코드:
if (isLoading) {
return <div>Loading...</div>;
} else {
return <div>Data</div>;
}
좋은 코드:
return isLoading ? <div>Loading...</div> : <div>Data</div>;
switch 문 대신 object(Map)를 사용하십시오. 감속기에 대한 이전 기사에서 이미 동일한 내용을 언급했습니다.
잘못된 코드:
switch (props.type) {
case "ADMIN":
return <Admin />;
case "USER":
return <User />;
default:
return <NotFound />;
}
좋은 코드:
const componentMap = {
ADMIN: Admin,
USER: User,
NOT_FOUND: NotFound,
};
const Component = componentMap[props.type];
return <Component />;
더 나은 코드:
const componentMap = {
ADMIN: React.lazy(() => import("../components/Admin")),
USER: React.lazy(() => import("../components/User")),
NOT_FOUND: React.lazy(() => import("../components/NotFound")),
};
const Component = componentMap[props.type];
return <Component />;
이름으로 여러 소품을 구성 요소에 전달하는 대신 객체 구조 분해를 사용합니다.
잘못된 코드:
const { name, age, role } = props;
return (
<>
<Component name={name} age={age} role={role} />
</>
);
좋은 코드:
return (
<>
<Component {...props} />
</>
);
문자열을 구성 요소에 전달하지 않을 때는 중괄호가 필요하지 않습니다.
잘못된 코드:
return <Component name={"John"} />;
좋은 코드:
return <Component name="John" />;
구성 요소 사용자 정의 소품에 대해 className , 스타일 등과 같은 반응 요소 소품을 사용하지 마십시오.
잘못된 코드:
return (
<Component style="bordered">
);
좋은 코드:
return (
<Component variant="bordered">
);
div, span 등과 같은 html 요소 대신 조각을 사용하십시오.
잘못된 코드:
return (
<div>
<span>{props.name}</span>
<span>{props.age}</span>
</div>
);
좋은 코드:
return (
<>
<span>{props.name}</span>
<span>{props.age}</span>
</>
);
if 블록이 무언가를 반환하는 경우 else 블록을 사용하지 마십시오.
잘못된 코드:
if (props.name) {
return <div>{props.name}</div>;
} else {
return <div>No name</div>;
}
좋은 코드:
if (props.name) {
return <div>{props.name}</div>;
}
return <div>No name</div>;
키 속성을 사용하지 않을 경우 div, span 등과 같은 Html 요소 대신 React.fragment를 사용하십시오.
잘못된 코드:
return (
<container>
{list.map((item) => (
<div key={item.id}>
<SomeComponent />
<SomeAnotherComponent />
</div>
))}
</container>
);
좋은 코드:
return (
<>
{list.map((item) => (
<React.Fragment key={item.id}>
<SomeComponent />
<SomeAnotherComponent />
</React.Fragment>
))}
</>
);
읽어주셔서 감사합니다 😊
질문이나 추가 사항이 있습니까? 댓글을 남겨주세요.
당신이하지 않은 경우 읽어야합니다
자세한 내용은 .
Github , , , Medium , Stackblitz에서 나를 잡아라.
Reference
이 문제에 관하여(모범 사례 및 패턴에 반응하여 코드 줄이기 - 2부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devsmitra/react-best-practices-and-patterns-to-reduce-code-part-2-54f3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)