Repository navigation
Replies: 5 comments
|
대장님 안녕하시렵니까?🫡 충성충성^^7
네 일단 저는 early return을 애정하는 사람이며, switch문이 나쁘다고는 생각하지 않는 사람임을 먼저 밝힙니다. if(!evaluationPaper) return <></>;를 switch문 외부에 둘 것 같습니다. 그렇게 되면 case 내부의 else return <></>;를 전부 없앨 수 있을 것처럼 보여요! 혹은 '지원자 평가', '평가 현황'을 key로 가지는 객체를 사용해도 될 것 같아보여요.
저는 조건부 렌더링에 삼항연산자를 쓰는거 좋아라합니다. 단 양자택일일때만. ++ |
|
빠라바라밤 리뷰어 송재한입니다 👾 const evaluationComponents = {
COMMENT: EvaluationTextarea,
SELECTION: EvaluationRadioButtonGroup,
SCORE: EvaluationTextarea,
};
export default function Page({type} : PageType) {
const Component = evaluationComponents[type];
return (
<Component />
)
}그러면 훨씬 더 새로운 형태의 타입을 추가하기도 쉽고, 간결해지는 장점이 있습니다! |
|
안녕하십니까!! 대장님 ^^7
컴포넌트 내에서 또 다른 함수 컴포넌트가 정의되어 사용되는 형태이기에, toss/slash의 useFunnel Hook처럼 render 컴포넌트의 결과를 메모이제이션 하기 위해 useMemo를 활용하거나, 혹은 render 역할을 수행하는 함수를 외부로 빼는 것도 좋다고 생각해요! 😊 리렌더링마다 새로운 함수가 평가되고 그에 따라 컴포넌트와 대응되는 파이버 노드가 새롭게 생성될 것이기에 리액트 공식 문서에서는 함수 컴포넌트의 중첩 정의를 지양하라는 내용과, 그 이유를 컴포넌트 트리에서의 상태 보존 관점에서 서술하는 내용이 있어서 이러한 내용을 한 번 공유해봅니당!! |
|
저도 삼항 연사자로 컴포넌트를 주는 방법에 대해 고민을 많이 했습니다. 삼항연산자와 css로 제어하는 방식으로 고민했었습니다. dom tree를 형성할 때 삼항연산자는 렌더링을 하지 않아 브라우저에 더 좋더라고 하더라구요! 만약 대장님이 쫌 더 깔끔하게 작성하고 싶다면 고차컴포넌트를 이용하는 것도 좋을거 같습니다!! const withConditionalRendering = (WrappedComponent) => {
return (props) => {
if (!props.condition) {
return null;
}
return <WrappedComponent {...props} />;
};
};
const ConditionalComponent = withConditionalRendering(Component);항상 건강하십쇼 대장님! |
const evaluationComponents = {
COMMENT: EvaluationTextarea,
SELECTION: EvaluationRadioButtonGroup,
SCORE: EvaluationTextarea,
};
const EvaluationItem = ({ type, groupPosition, options, title, isResultExist, resultText }: EvaluationItemProps) => {
const Component = evaluationComponents[type];
return (
<EvaluationItemView
idx={groupPosition + 1 > 10 ? String(groupPosition + 1) : `0${groupPosition + 1}`}
title={title}
item={isResultExist && resultText ? (
<EvaluationTextBox>{resultText}</EvaluationTextBox>
) : (
<Component groupPosition={groupPosition} options={options} />
)}
/>
);
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
안녕하세요? 이번에는 좀 최신 코드를 들고와봤습니다.
배경
한 달정도 전에 MAC 결과지에 쓰일 평가 모듈을 개발했었는데, 그때 시간이 매우매우매우 촉박했어서 큰 고민 하지 않고... 개발을 헀었는데, 막상 코드를 보니 글케 썩 맘에 들진 않더군요. 지금도 엄청 나쁜 코드는 아니지만 여러분들이라면 멋진 의견을 주실 것 같아 올려봅니다.
설명
코드
논의점
All reactions