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