작성
·
312
0
안녕하세요! 두 가지 질문이 있어서 글 남깁니다.
display flex가 특정 id에 적용이 안됩니다 ㅠㅠ
app.js에서 id=header인 부분에 css를 적용시켰는데 딱 header 부분만 적용이 안됩니다. 코드는 아래와 같습니다.
app.js 코드
import logo from './logo.svg';
import './App.css';
import MainPageComponent from "./main/index.js"
import React, { Component } from 'react';
import {Link, Switch, Route, useHistory} from 'react-router-dom'
import UploadPage from './upload/index.js';
import ProductPage from './product/index.js';
import { Button } from 'antd';
import {DownloadOutlined} from '@ant-design/icons'
function App() {
const history = useHistory();
return (
<div>
<div id="header">
<div id="header-area">
<Link to="/">
<img src="/images/icons/logo.png" />
</Link>
<Button size="large" onClick={function(){
history.push('/upload');
}} icon={<DownloadOutlined />}
>
상품 업로드
</Button>
</div>
</div>
<div id="body">
<Switch>
<Route exact={true} path="/">
<MainPageComponent />
</Route>
<Route exact={true} path="/products/:id">
<ProductPage />
</Route>
<Route exact={true} path="/upload">
<UploadPage />
</Route>
</Switch>
</div>
<div id="footer"></div>
</div>
);
}
export default App;
app.css
* {
margin: 0;
padding: 0;
line-height: normal;
}
html,
body,
#root,
#root > div {
height: 100%;
};
#header {
height: 64px;
/*가운데 정렬하는 방법*/
display: flex;
justify-content: center;
border-bottom: 1px solid gray;
}
#header-area {
width: 1024px;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
#header-area img {
width: 128px;
height: 36px;
}
#body {
height: 100vh;
width: 1024px;
margin: 0 auto; /*가운데 정렬하는 방법 중 하나*/
padding: 24px;
}
#footer {
height: 200px;
background-color: rgb(230,230,230);
}
이렇게 했을 때 아래와 같이 header만 적용이 안됩니다...(header-area는 css가 잘 적용이 되네요)
Link 제대로 작동 안됨
Link 태그를 통해 상품 상세페이지로 넘어가는 코드를 구현했는데 잘 안되는 부분이 있습니다 ㅠㅠ 원래라면 상품 카드를 눌렀을 때 자동으로 상품 상세페이지로 넘어가면서 해당 페이지 내용이 나타나야하는데 저는 카드를 누르면 url 주소만 바뀌고 제가 수동으로 새로고침을 해야 해당 페이지로 넘어갑니다...(그랩마켓 로고를 눌렀을 때 메인페이지로 돌아가는 것도 마찬가지입니다) 위 코드에서 잘못된 부분이 어떤거길래 이렇게 되는걸까요...?
감사합니다!
답변 2
0
안녕하세요!
1번의 경우 코드 자체만 봤을 때는 문제가 없어보이는데요. 혹시 header123 이런식으로 id를 바꿔도 동일하게 문제가 발생할까요?
2번은 상세 코드를 보여주셔야 확인이 가능할 것 같습니다! 추가로 react-router-dom에 대한 기본 설정들이 잘 되었는지 확인해 보셔도 좋을 것 같아요!
0
안녕하세요, 인프런 AI 인턴입니다.
문의하신 내용에 대해 답변드리겠습니다.
제공하신 코드와 설명을 바탕으로 보았을 때, display flex 적용이 안 되는 문제의 주요 원인은 CSS 코드에서 잘못된 부분이 없어 보입니다. 문제가 되는 부분은 다른 곳에서 발생할 가능성이 높습니다. 예를 들어, 다른 CSS 파일에서 #header에 대한 스타일이 덮어쓰이거나, HTML 구조상의 문제로 인해 스타일이 예상과 다르게 적용되는 경우가 있을 수 있습니다. 또한, 브라우저의 캐시로 인해 최신의 CSS가 반영되지 않는 경우도 있으므로, 캐시를 비우고 다시 시도해 보시기 바랍니다.
React Router를 사용할 때 Link 컴포넌트를 통해 페이지 이동을 구현하는 경우, 페이지가 자동으로 리로드 되지 않고 URL만 변경되는 문제가 발생할 수 있습니다. 이 문제는 대부분의 경우, <Route>
컴포넌트의 설정이나 React Router의 버전 및 설정 문제로 발생할 수 있습니다. 제공된 코드 내에서 명확한 오류를 찾기는 어렵지만, <Switch>
와 <Route>
컴포넌트의 사용 방법은 올바른 것으로 보입니다. 문제 해결을 위해 다음 사항을 확인해 보시기 바랍니다.
react-router-dom
의 버전이 최신인지 확인하고, 필요하다면 업데이트해 보세요.<Route>
컴포넌트에 정의한 경로와 Link 컴포넌트에서 사용한 to 프로퍼티 값이 정확히 일치하는지 확인해 보세요.<Link>
컴포넌트만으로 페이지 전환이 이루어지도록 구조를 간소화해 보는 것도 좋은 방법입니다.위의 사항들을 확인하시고도 문제가 해결되지 않는다면, React Router의 설정이나 다른 상위 컴포넌트의 영향을 받을 수 있으므로 전체적인 코드 구조를 다시 검토해 보시는 것을 권장드립니다.
추가적인 문의 사항이 있으시면 언제든지 질문해 주세요. 감사합니다!