1 분 소요

Project

팀 프로젝트 컴포넌트 만들기

React 팀 프로젝트

컴포넌트 만들기

  • NavigationUser

    <LinkElement to="/">
      {location === '/' ? (
        <ChatIcon width="20" height="20" {...selectedAttr} />
        ) : (
          <ChatIcon width="20" height="20" />
        )}
        <NavName isHere={location === '/'}>번역 요청</NavName>
      </LinkElement>
      <LinkElement to="/list">
        {location === '/list' ? (
          <ChatIcon width="20" height="20" {...selectedAttr} />
        ) : (
          <ChatIcon width="20" height="20" />
        )}
        <NavName isHere={location === '/list'}>내 견적</NavName>
      </LinkElement>
      <LinkElement to="/chat">
        {location === '/chat' ? (
          <ChatIcon width="20" height="20" {...selectedAttr} />
        ) : (
          <ChatIcon width="20" height="20" />
        )}
        <NavName isHere={location === '/chat'}>내 상담</NavName>
      </LinkElement>
    </NavContainer>
    

    NavLink를 쓸 수 있지만, active 시 하위 컴포넌트 중 svg도 완전히 바뀌어야 하기 때문에 Link로 하고 attribute를 동적으로 주었다.

SVG 색상 변경

SVG 컴포넌트에 fill 어트리뷰트로 색상을 전달하였으나 변경이 되지 않아 svg 파일을 확인하여 fill 어트리뷰트 위치를 바꾸어 주었다.

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="#36c">
	<title>
		speech bubbles
	</title>
	<g>
		<path d="M18 4h-1v7a2 2 0 0 1-2 2H4v1a2 2 0 0 0 2 2h10l4 4V6a2 2 0 0 0-2-2z"/>
		<path d="M14 0H2a2 2 0 0 0-2 2v14l4-4h10a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z"/>
	</g>
</svg>

fill 속성이 적용될 수 있도록 svg 태그에 올려두었다. 원래는 g태그에 있었다.

Header Components

Error

svg import error

SVG 파일을 가져오려고 그대로

import { ArrowbackIcon } from "../../assets/icons/ArrowbackIcon.svg";

를 하였는데 다음과 같은 에러가 발생했다.

InvalidCharacterError: Failed to execute ‘createElement’ on ‘Document’: The tag name provided (‘/assets/icons/ArrowbackIcon.svg’) is not a valid name.

찾아보니 SVG를 컴포넌트로 사용하려면 React component 로 불러야 한다고 한다.

따라서 아래와 같이 수정해주었다.

import { ReactComponent as ArrowbackIcon } from "../../assets/icons/ArrowbackIcon.svg";

댓글남기기