Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

한바다

[리액트]react-router-dom, array&map 본문

React

[리액트]react-router-dom, array&map

한바다진화 2024. 7. 8. 21:48

Router 란?

리액트에서 라우터는 웹사이트에서 페이지를 이동하게 해주는 "길 안내표" 같은 역할을 한다.

마치 마을에서 이집 저집을 방문하듯이 웹사이트의 여러페이지를 클릭하는 링크나 버튼들을 통해 쉽게 이동 할 수 있다.

 

- 우선 라이터는 터미널에서  해당 주소로 설치해 준다. >npm install react-router-dom 

 

✔️ tutorial-route 진행

[Home.js]

import React from "react";

function Home() {
  return (
    <>
    <h1>홈페이지 메인입니다.</h1>
    
    </>
  )
}
export default Home;

[About.js]

import React from "react";

function About() {
   return (
    <>
       <h1>소개 페이지입니다.</h1>
       
    </>
   )
}

export default About;

[Contect.js]

import React from "react";

function Contect() {
  return (
    <>
    <h1>회사 연락처</h1>
    <p>문의 사항이 있으면 아래 연락처로 연락 해주세요.</p>
    </>
  )
}
export default Contect;

[Navbar.js]

import React from "react";
import { Link } from "react-router-dom";

function Navbar() {
  return (
    <nav>
       <ul>
          <li><Link to="/">Home</Link></li>
          <li><Link to="/about">About</Link></li>
          <li><Link to="/Contect">Contect</Link></li>
       </ul>
    </nav>
  )
}
export default Navbar;

▶Navbar에서 "react-router-dom"을 import해준다.

    HTML에서는 <a href='/'>Home</a>를 작성하지만 React에서는 <Link to='/'>Home</Link>작성한다

    즉 a 가 Link와 같고  href가 to 와 같다!!!

 

위와 같이 작성 했으면 App.js에 아래와 같이 작성해준다.

import { Route,Route } from "react-router-dom";
import Home from "./component/Home";
import About from "./component/About";
import Navbar from "./component/Navbar";
import Contect from "./component/Contect";

function App() {
   return  (
     <div>
       <Navbar  />
       <Routes>
       
     <Route path="/" element={<Home/>}></Route>
        <Route path="about" element={<About />} />
        <Route path="contect" element={<Contect />} />
        </Routes>
    </div>
  );
}

export default App;

 

▶ Routes, Route import 해서 링크 설정한다.

Java에서 @GetMapping('/')으로 주소를 설정해 주는 것이 React에서 path='/' 이다.

Java에서 return "html파일명"으로 보여줄 화면 설정해주는 것이 React에서 element={<Home/> 이다.

 

▶ 위와 같이 작성 되었으며 이제 터미널에서 실행해준다

실행해야 하는데 아래와 같이 react-workspace일 경우에는

 

- cd t 작성후 tap키를 누른다 그럼 경로 내 포함되고 이제 npm start 를 진행한다!

앗 그런데 아래와 같이 실행이 안된다!!

 

생각해보니 수업시간에 무건운 녀석 node_modules를 삭제 해줘서 위와 같이 실행할 수 없었다.

이럴경우 명령어 npm i 를 입력한다. npm은 노드 패키지 메니저인데 요것이 다시 복원시켜 주는 것이다!

 

npm i 로 복원시켜 준 후 npm start를 하니 아래와 같이 짜잔 실행 되었다

[터미널 코드]

 

[실행된 화면]

 

array 와 map 

react를 공부하며 자바에서 배웠던 array와 map은 계속 된다!!! 간만에 정리를 해본다~

✔️Array

배열은 1개의 변수에 여러개의 값을 순차적으로 저장할 때 사용한다. 즉 여러개의 값을 하나로 묶어서 저장하는 방법

배열을 사용하는 이유는 여러 개의 데이터를 하나의 배열에 넣어 정리하기 쉽기 때문에 사용하며 배열에 들어 있는 

데이터는 순서대로 저장되기 때문에, 몇 번째에 있는지 쉽게 찾을 수 있다.

배열에 넣는 데이터는 순서가 있는데 inde(0)   마지막 숫자(마지막 숫자 -1); 이런 식으로 차례대로 번호가 매겨진다.

또한 배열에 넣는 데이터는 같은 종류로 숫자배열이면 모두 숫자, 문자배열이면 모두 글자이다

✓배열의 특징

 - 배열은 같은 타입의 데이터만 저장할 수 있다

- 한번 생성된 배열은 길이를 늘리거나 줄일 수 없다.

[ 배열의 선언과 생성방법]

int[] numbers = new int[5];
numbers 에는 숫자 5개를 넣을 수 있는 공간이 생성되어 0부터 4를 벗어난 자리에 숫자를 넣으면 오류가 남

 

[for 문을 활용한 배열 출력]

public void practice(){
            int number[] = new int[10];
            System.out.println("최대길이 : " +numbers.lenght);
            
            for(int i = 0; i<numbers.lingth; i++){
                    number[i] = i+1;
                    System.out.println("numbers["+i+"]="+numbers[i]);

 

✔️Map

- 맵(Map)은 키(key)와 값(value) 쌍으로 데이터를 저장하는 구조로 어떤 정보를 다른 정보와 짝지어서 저장하는 방식이다.

- Map은 키를 통해 값을 빠르게 찾을 수 있다. 어떤 키가 있는지 알면 그에 해당하는 값을 바로 찾는다.

- 키와 값을 짝지어 저장한다. 서로 관련된 데이터를 한쌍으로 묶어 저장하기 좋음

- Map의 특징은 키와 값은 항상 쌍으로 저장되며 키(key)는 중복저장 허용이 안되지만 (set방식) 값(value)은

  중복저장 가능하다.(list 방식)

- 키를 통해 값을 빠르게 찾을 수 있다.

- 숫자, 문자, 리스트 등 어떤 데이터도 값으로 저장할 수 있어 유연한 데이터 구조를 가지고 있다.

- 즉 맵은 키와 값 쌍으로 데이터를 저장하는 구조로 키를 통해 값을 빠르게 찾을 수 있고,

  데이터를 유연하게 관리할 수 있다.

public class MapEx {
       public static void main(String[] args) {
       //Map 생성
       Map<String, Integer> student = new HashMap<>();
       // put 을 활용해서 값 추가하기
       student.put("철수",90);
       student.put("영희",85);
       student.put("민수",88);
       //전체보기
       System.out.println(student)
       //remove 사용해서 삭제하기
       student.remove("영희");
       
       //키는 유일해야하며 키의 값은 중복이 될수 없음, 맨 마지막 값으로 덮어씌어짐

 

[Map 정리]


Map : 특정 키를 입력하면 해당되는 값을 얻을 수 있는 Collection 객체
키 = key (=열쇠)
값 = value(=값어치가 있는 것)

key:value 값으로 구성

메서드
put(key, value)   : 지정된 키와, 지정된 값의 쌍을 추가

get(key)   : 지정된 키에 저장된 값을 보여줌

containsKey(key)  : 지정된 키가 존재하는지 확인
containsValue(value) : 지정된 값이 존재하는지 확인
remove(key)  : 지정된 키와 키에 저장된 값을 제거
keySet()  : 키를 포함하는 집합을 반환
values()  : 모든 값들을 포함하는 컬렉션 반환
entrySet()  : 모든 키-쌍을 포함하는 집합을 반환

1.[put(key, value)   : 지정된 키와, 지정된 값의 쌍을 추가]
public void practice2() {
		//									<> 자료형 넣어도 되고 안 넣어도 됨
		Map<String,String> map = new HashMap<String,String>();
		// map.put 을 활용해서  
		map.put("학원", "서울시 강남구"); 
		map.put("등산", "서울시 관악구"); 
		map.put("롯데타워", "서울시-송파구");
		
		// 전체출력 
		System.out.println(map);
2.[특정 값이 존재하는지 확인]
Map<String, Integer> map = new HashMap<>();
		map.put("사과"  , 100);
		map.put("바나나", 200);
		map.put("체리"  , 300);
        // 200원짜리 과일이 존재하는가 ?
		System.out.println("200원 과일이 존재하는가? : " +  map.containsValue(200));
        //containsValue 와 containsKey 모두  true false 값으로 보여짐
        // 체리 과일이 존재하는가 ?
		System.out.println("체리가 있나요? : " + map.containsKey("체리") );
		
		//크기 조회
		System.out.println("현재 map의 크기 : " + map.size());
3.[put을 이용해서 추가]
 Map<Integer,String> map = new HashMap<>();
 map.put(1,"에그마요");
		map.put(2,"로티세리바베큐");
		map.put(3,"스테이크앤치즈");
		map.put(4,"스파이시쉬림프");
 [get을 이용해서 3번에 뭐가 들어있는지 확인]
 System.out.println(map.get(3));
 - remove 활용해서 4번을 지워줌
 map.remove(4);
 System.out.println(map);
 -isEmpty() map이 비어있는지 확인
 System.out.println(map.isEmpty()); //비어있지 않기 때문에 false
 [keySet()을 이용해서 for-each 모두 보기]
 for(int num : map.keySet()) {
     String 메뉴이름 = map.get(num);
     System.out.println(메뉴이름);
     }
  [Map.Entry 키-값을 동시에 가져오는 방법 뒤에는 변수명.entrySet()
  for(Map.Entry<Integer,String> e : map.entrySet()) {
       System.out.printle(e.getKey() + "-" + e.getValue());
      }
  [최종삭제]
  map.clear();
  }

'React' 카테고리의 다른 글

[리액트]백엔드와 프론트 연결  (0) 2024.07.16
[리액트]로그인  (0) 2024.07.15
[리액트]Axios와 페이지네이션  (0) 2024.07.12
정규식 작성과 리액트 라우터  (0) 2024.07.11
리액트useState&스프링 gradle  (0) 2024.07.10