React #05 useRef

장서영·2023년 12월 11일
0

React

목록 보기
5/12

useRef

-특정 요소를 선택해서 그 요소에 변화를 주고 싶을 때, 바닐라 script에서는 getElementById, querySelector.. 등의 문법을 사용했다
-React 에서도 특정 요소에 접근해야할 일이 종종 발생함
ex) 특정 input에만 focus, 클릭 시 요소의 사이즈 변경, ..etc

버튼 클릭시 크기에 맞는 사이즈로 변경

import React,{useRef} from 'react'
import './App.css'

const Ex07 = () => {
        /*
        use~ (리액트 훅)를 사용할 때는 특정 함수 안에 선언문이 들어있으면 안된다.
        */
    const divRef = useRef();

    /** 원하는 값으로 사이즈를 변경시켜주는 함수 */
    const changeSize = (size) =>{   
        console.log('divRef',divRef.current);
        divRef.current.style.width = size+"px";
        divRef.current.style.height = size+"px";
    };

    const ckBtn = (e) => {
        console.log('ck',e.target.innerText);
        if(e.target.innerText === '작게'){
            changeSize(100)
        }else if(e.target.innerText === '크게'){
            changeSize(300)
        }else{
            changeSize(200)
        }
       
    };
  return (
    <div>
        <button onClick={ckBtn}>작게</button>
        <button onClick={ckBtn}>원본</button>
        <button onClick={ckBtn}>크게</button>

        <div className='square' ref={divRef}/>
        </div>
  )
}

export default Ex07

input값에 따라 pdf 변경 실습

-pdf 변경
iframe → cctv화면을 통해서 조대를 보는 것

→ src 앞에 생략 가능 한거임

첫번째 -> pdf 변경 클릭하면? pdf1
두번째 -> pdf 변경 클릭하면? pdf2
우리가 사용할 함수는 changePdf 라는 함수
useRef 기능 이용해 볼 것

=============================

import React, { useRef } from 'react'

const Ex08 = () => {

    const inputRef = useRef();
    const changeSrc = useRef();

    const changePdf = (src) => {
        // input 안에 사용자가 작성한 내용
        changeSrc.current.src =`/pdf/pdfFile`+src+`.pdf`;
    }

    const ckBtn = () => {
        // input 안에 사용자가 작성한 내용
        console.log('input', inputRef.current.value);
        
        if (inputRef.current.value == '첫번째') {
            // pdf1로 변경
            changePdf(1)
            console.log('src',changeSrc.current.src);

        } else if (inputRef.current.value == '두번째') {
            // pdf2로 변경
            changePdf(2)

        } else {
            alert('오류!');
        }
    }

    return (
        <div>
            <input type='text' ref={inputRef} />
            <button onClick={ckBtn}>pdf 변경</button>

            <iframe
                width="100%"
                height="90%"
                src="/pdf/pdfFile1.pdf"
                ref={changeSrc}>
                </iframe>
        </div>
    )
}

export default Ex08

파일 보낼 때 주의사항

노듈 삭제하고
npm install
내가 가진 pakage.json 안에 적힌 설명대로 모듈 설치해줘
npm upgarde — force
: 강제로 업그레이드

profile
영이의 일상은 짱셔요

0개의 댓글