프로젝트를 진행하면서 마주한 여러 오류들에 대한 기록.
재차 마주칠 것을 대비해서 정리해보자!
<QueryClientProvider client={queryClient}>
로 감싸주지 않아 발생한 오류.QueryClientProvider
컴포넌트를 사용해 QueryClient
인스턴스를 제공한다.QueryClientProvider
는 React Query 훅과 컴포넌트에서 QueryClient
인스턴스에 접근할 수 있게 만드는 역할을 한다.react-query의 작동 방식에 대해 더 자세히 알아보기 : [LINK]
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
{/* 기타 컴포넌트들 */}
</QueryClientProvider>
);
}
"react/prop-types": ["off"]
을 추가하면 해결할 수 있다.prop-types
패키지를 설치해야 한다.import PropTypes from 'prop-types';
const MyComponent = ({ value }) => {
return <div>{value}</div>;
};
MyComponent.propTypes = {
value: PropTypes.string.isRequired,
};
export default MyComponent;
위 코드는 propTypes를 사용해 value 프롭스의 타입을 string으로 지정, isRequired를 사용하여 필수 프롭스임을 설정하고 있다. 이로써 해당 컴포넌트를 사용할 때 value 프롭스가 누락되거나 타입이 잘못된 경우 경고가 표시된다.
<input>, <select>, <textarea>
등)와 라벨(<label>
)이 연결되지 않았을 때 발생하는 오류.<label htmlFor="nameInput">Name:</label>
<input type="text" id="nameInput" />
React와 같은 SPA 라이브러리에서는 컴포넌트 재사용으로 인해 id의 유일성을 보장하지 못하기 때문에 추가적인 옵션이 필요하다
는 분석을 통해 아래와 같은 방법을 사용하셨고, 나 또한 이를 적용하여 해결이 되었다!/* .eslintrc.json */
{
// ...
"rules": {
// ...
"jsx-a11y/label-has-associated-control": [
2,
{
"labelAttributes": ["htmlFor"]
}
]
}
}
eslintrc.json의 rules에 react/function-component-definition을 추가하여 함수형 컴포넌트의 정의 방식을 지정한다.
rules:{
'react/function-component-definition':[2, {namedcomponents:'arrow-function'}]
}
참고 글: [LINK]