> ### React 개인 프로젝트 심화 피드백
Q. Router에 조건문을 통해 로그인시에만 홈 화면에 접근하도록
const [isLogin, setIsLogin] = useState();
{isLogin ? (
<Routes>
<Route path="/" element={<Login />} />
<Route path="/" element={<Layout />}>
<Route path="/detail/:id" element={<Detail />} />
<Route path="*" element={<Navigate replace to="/" />} />
<Route path="/home" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</Route>
</Routes>
) : (
<Route path="/" element={<Login />} />
)}
true 일때만 보여주는 Route와 false일때만 보여주는 Route를 설정Refresh 된다.강조: 우리 component를 반드시 보여주는 UI관점으로만 생각하지말고, 하나의 기능을 하는 TREE구조로 생각하여야 한다.(많은 수강생들이 이 부분을 처리하지 못하였다) 왜?->Component를 UI적으로만 생각하여서.
UI관점이 아닌 하나의 END_TAG <..../>로 우리는 기억해야 한다. const newLetter = {
id: uuid(),
nickname: localStorageData.nickname,
content,
avatar: null,
writedTo: member,
// createdAt: new Date(),
createdAt: new Date().toString(),
userid: localStorageData.id,
};
createdAt의 new Date()가 문자열이 아닌 숫자로 Redux의 store에 들어가게 되어 non-serizable에러가 생겼다.redux라는 외부 tool을 사용하고 있음으로, 데이터(값)을 이동시기키기 위해서는 type을 문자열로 변경해야한다.toString()을 통해 문자열로 변경하여 데이터의 입출력을 형식에 맞게 구성하여 문제를 해결하였다.

보여줄UI를 고려하여 정적인 컨텐츠를 구성한다.하나의 부분으로 조각조각 구성한다.여러조건을 충족한 공통적, 공용화할 수 있는 점이 있다면 컴포넌트화 처리한다.절대 권장 되지 않는다const [isTable,setIsTable]=useState([]);
toolkit과 서로 값을 주고 받을 수 있도록 하는 것이 Redux생각해봐야할 조건들
코드가 같아 보이더라도 코드가 수정되는 이유가 다르다면 같은 코드가 아니므로 분리한다
컴포넌트는 하나의 책임을 갖고 독립적인 기능을 하는 것을 말한다. 그러므로 사용되는 컴포넌트 안에서 제어되는 것이 바람직하다.
보편적으로 인정하는 하나의 기능을 하는 추상적인 비지니스 로직이 포함되어 있다면 컴포넌트 변경이 어렵다