** 리액트 코드 모범 사례 (airbnb 기반)과 중복되는 내용은 생략
const [name, setName] = useState('');
const [count, setCount] = useState(0);
const onClick = () => {
setName('John');
setCount(count + 1);
};
const [state, setState] = useState({
name: '',
count: 0,
});
const onClick =() => {
setState((prev) => ({
...prev,
name: 'John',
count: prev.count + 1
}));
};
return <div style={{ backgroundColor: "red" }}></div>;
const Container = styled.div`
background-color: ${({ theme }) => theme.colors.background};
`;
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={onClick}>Click me</button>;
}
}
const Counter = () => {
const [count, setCount] = useState(0);
const onClick = () => setCount(prev => prev + 1);
return <button onClick={onClick}>Click me</button>;
};
return (
<ul>
{items.map((item) => (
<Component>{item}</Component>
))}
</ul>
);
const MemoComponent = React.memo(Component);
return (
<ul>
{items.map((item) => (
<MemoComponent>{item}</MemoComponent>
))}
</ul>
);
switch(props.type) {
case "ADMIN":
return <Admin />;
case "USER":
return <User />;
default:
return <NotFound />;
}
const componentMap = {
ADMIN: Admin,
USER: User,
};
const Component = componentMap[props.type] ?? NotFound;
return <Component />;
const NotFound = React.lazy(() => import('../components/NotFound'));
const componentMap = {
ADMIN: React.lazy(() => import('../components/Admin')),
USER: React.lazy(() => import('../components/User')),
};
const Component = componentMap[props.type] ?? NotFound;
return <Component />;
if (props.name) {
return <div>{props.name}</div>;
} else {
return <div>이름 없음</div>;
}
if (props.name) {
return <div>{props.name}</div>;
}
return <div>이름 없음</div>;