서버에 데이터를 보내는 과정에서 특정 데이터값은 value를 작성하지 않아도 오류가 발생하지 않는 특징 발견
이전 react-hook-form
라이브러리를 이용하여 폼을 구성하면서도 발견했었음..!
ES6 문법으로 객체의 key와 value가 같다면, 생략하여 사용할 수 있는 문법
[예시]
const [content, setContent] = useState<string>('');
testRequest({
testId: data.id,
content: content,
});
const [content, setContent] = useState<string>('');
testRequest({
testId: data.id,
content,
});
위와 같은 형식으로 content라는 것을 명확하게 제시해주는 것이 직관적이라고 판단했었기 때문에, 해당 문법을 잘 사용하지 않았었음
GPT 답변을 확인했을 때, 간결하고 현대적인 문법을 사용한 방식으로 권장된다고 한다.
현재 프로젝트를 구성하며, 코드 구성에서 문제를 찾는다면 서버
에서 사용하는 key값
과 클라이언트
에서 사용하는 key값
에 차이가 있다는 점이다.
위와 같은 현대적 문법을 사용하기 위해서는 각 엔드포인트에서 네이밍을 다르게 할 이유가 없다면 서버와 클라이언트의 네이밍을 그대로 가져가는 것이 직관적이고 에러 핸들링 면에서도 더욱 편리할 것으로 판단된다.
레거시 코드가 더욱 지저분해 보이는 이유 하나를 찾게 되었다.. ㅠ
현재 구성한 컴포넌트에서는 placeholder의 props를 string으로 받고 있어, \n
을 string 자체로 받아들여 줄바꿈이 처리되지 않았다.
서칭을 통해 찾은 방법들과, 적용한 방법을 정리해보았다.
<textarea id='test' placeholder="placeholder 내용입니다. (100자 내로 입력해주세요.)"></textarea>
현재 프로젝트의 프레임워크는 React 기반의 Next.js 였으며, JSX 문법에서는 위 내용이 제대로 적용되지 않았다.
const textareaRef = useRef<HTMLTextAreaElement>(null);
useEffect(() => {
if (textareaRef.current) {
textareaRef.current.setAttribute(
'placeholder',
'첫 번째 줄\n두 번째 줄\n세 번째 줄'
);
}
}, []);
return <textarea ref={textareaRef} />;
\n
값을 사용하고 싶어, 위와 같은 형식으로 구성해보았으나, 자체적으로 구성한 textarea component에 ref값이 props drilling 되는 것 뿐만 아니라, 리렌더링 이후에 잘 동작하지도 않았다.
문득, 놓치고 있던 부분이 있었다. 백틱(`)을 이용하면 매우 편리하게 해결된다는 점;
<MyMultilineTextField
placeholder={`내용을 입력해주세요!\n(모시깽 모시깽 다양하게요~)`}
value={content}
onChange={onChangeContent}
...
/>
템플릿 리터럴은 ES6(ECMAScript 2015)에서 도입된 JavaScript 기능으로, 문자열을 보다 유연하게 작성할 수 있다는 점을 간과하고 있었다.
위와 같은 형식으로, placeholder에 넘겨줄 string을 괄호로 묶어, 객체 형태의 백틱 string으로 전달하면, 원하는 방식의 줄바꿈이 원활하게 이뤄진다.
ES6 문법에 대해서 간과하고 있던 하루였다.