오류1: link를 이용해서 연결하자 오류가 뜸 (app.jsx에서 만들어진 route안에 route로 중복들어가져서인지 오류가 났다.)
해결: useNavigate 를 사용하여 해결함
오류2: 현재 페이지에 글씨 색을 변경하고 싶었으나 조건문에서 오류가 생김
해결: props로 해당 조건에 맞는 값을 전달받아 addClass되게 설정
오류3: 1,2,3depth중 필요없는 값을 props에 쓰지 않아도 이미 태그가 만들어져서 자리를 차지함, before로 준 이미지까지 같이 보이는 오류가 생김
해결: 삼항연산자를 통해 undefined일 경우 display 스타일을 설정함 + 조건오류에서 {twoDepth} x=>twoDepth o 로 변경하여 해결
<p className={linkActive==='twoDepth'?'subTwoDepth active':'subTwoDepth'} onClick={gotwoDepth}
style={{display:twoDepth===undefined?'none':'inline-block'}}>
▼ 전체 BreadCrumb.jsx의 코드
import React from 'react';
import styled from 'styled-components';
import { useNavigate } from 'react-router-dom';
import splite from '../../../img/zetaplan_splite.png';
const BreadCrumb = ({ oneDepth,twoDepth,threeDepth,oneDepthLink,twoDepthLink,threeDepthLink,linkActive})=>
{
const navigate = useNavigate();
const goHome = () => {
navigate('/main');
};
const goOneDepth = () => {
navigate(`${oneDepthLink}`);
};
const gotwoDepth = () => {
navigate(`${twoDepthLink}`);
};
const gothreeDepth = () => {
navigate(`${threeDepthLink}`);
};
return (
<SubBreadcrumb>
<p onClick={goHome}>HOME</p>
<p className={linkActive==='oneDepth'?'subOneDepth active':'subOneDepth'} onClick={goOneDepth} style={{display:oneDepth===undefined?'none':'inline-block'}}>
{oneDepth}
</p>
<p className={linkActive==='twoDepth'?'subTwoDepth active':'subTwoDepth'} onClick={gotwoDepth} style={{display:twoDepth===undefined?'none':'inline-block'}}>
{twoDepth}
</p>
<p className={linkActive==='threeDepth'?'subThreeDepth active':'subThreeDepth'} onClick={gothreeDepth} style={{display:threeDepth===undefined?'none':'inline-block'}}>
{threeDepth}
</p>
</SubBreadcrumb>
);
};
export default BreadCrumb;
const SubBreadcrumb= styled.div`
position: absolute;
top:2rem;
right:5rem;
color: #fff;
font-size:2.5rem;
font-weight:700;
p{
display:inline-block;
margin-left:2rem;
cursor: pointer;
color:#fff;
&:hover{
color:#007ACC;
};
&::before{
content:'';
display:inline-block;
background:url(${splite}) no-repeat -236px -221px;
background-size: 599px 280px;
width: 8px;
height: 13px;
margin-right: 2rem;
};
&:first-child::before{
display:none;
};
};
p.active{
color:#007ACC;
};
@media all and (min-width: 768px) and (max-width: 1023px){
&{
font-size: 3.5rem;
};
};
@media all and (min-width: 501px) and (max-width: 767px){
&{
right: 3rem;
top: 1rem;
font-size: 5.5rem;
};
};
@media all and (max-width: 500px){
&{
right: 2rem;
top: 0rem;
font-size: 5.5rem;
p{
margin-left:1.5rem;
&::before{
margin-right:1.5rem;
};
};
};
};
`
▼ BreadCrumb컴포넌트를 연결하는 jsx 코드(SubBanner)
import BreadCrumb from './BreadCrumb';
..
<BreadCrumb oneDepth={oneDepth} twoDepth={twoDepth}
threeDepth={threeDepth} oneDepthLink={oneDepthLink} twoDepthLink={twoDepthLink}
threeDepthLink={threeDepthLink} linkActive={linkActive}/>
..
▼ 실제 화면에 보이게 작성하는 jsx코드(각각 pages)
/*one,two,three중 사용하는것만 택해서 작성(Depth+DepthLink는 세트)*/
const oneDepth='소식 · 자료';
const oneDepthLink='/zeta';
const twoDepth='소식';
const twoDepthLink='/zeta-people';
const threeDepth='NEWS';
const threeDepthLink='/zeta-ci';
/*메뉴 색상 지정(oneDepth,twoDepth,threeDepth 중 택1)*/
const linkActive='threeDepth';
return (
<div className='ztNetWorkBox'>
{/*one,two,three중 사용하지 않는건 지우기+linkActive={linkActive}는 지우면 안됨*/}
<SubBanner title={title} img={subBg} oneDepth={oneDepth} oneDepthLink={oneDepthLink}
twoDepth={twoDepth} twoDepthLink={twoDepthLink} threeDepth={threeDepth}
threeDepthLink={threeDepthLink} linkActive={linkActive}/>
'cbp 프로젝트 진행' 카테고리의 다른 글
[2022.07.30]사이트 느린 로딩 해결하기(React.memo + React.lazy) (0) | 2022.07.30 |
---|---|
[2022.07.24] 특정 요소가 화면에 스크롤 되면 나타나게 하기(점점 오른쪽으로 커지게 loding처럼 효과) (0) | 2022.07.24 |
[2022.07.23] 모달창 만들기 (0) | 2022.07.23 |
[2022.07.20] 클릭시 해당영역 top기준으로 이동하기 설정 오류 (0) | 2022.07.20 |
[2022.07.20] 최종 정리- 해당 영역 스크롤시 왼쪽 메뉴 글씨 색 변경 설정(2) (0) | 2022.07.20 |