[TIL]23-06-26

hyein·2023년 6월 27일
0

TIL

목록 보기
16/34
post-thumbnail

useRef()로 특정 input요소에 focus()하기!

import useRef

useRef를 import해야한다.
useRef는 react내장함수이므로 useState와 같은 방법으로 import한다.

import { useRef, useState } from 'react';

useRef변수만들기

useRef에 해당하는 변수를 만들어야한다.
작성자칸은 authorInput으로 내용입력칸은 contentInput으로 만든다.

const authorInput = useRef();
const contentInput = useRef();

authorInput,contentInput 넣어주기

작성자칸에 해당하는 input과 내용입력칸에 해당하는 textarea에 authorInput,contentInput을 넣어준다.


	<div>
        <input
            ref = {authorInput}
            name='author'
            value={state.author}
            onChange = { handleChangeState }                    
        />                                  
    </div>
    <div>
        <textarea
            ref = {contentInput}
            name='content'
            value={state.content}
            onChange = { (e) => {
                setState({
                    ...state,
                    content: e.target.value,                            
                });                        
            }}                    
        />
    </div>

제출버튼 눌렀을때 focus실행

제출버튼에 해당하는 handleSubmit()에 작성자 칸에

글자가 1 미만이면 focus하고,
내용입력 칸에 글자가 5미만이면 focus하도록 한다.
둘다 해당되지 않으면 저장성공을 알려준다.

const handleSubmit = () => {
    if(state.author.length < 1){
        authorInput.current.focus();     
        return;
    }

    if(state.content.length < 5) {
        contentInput.current.focus();     
        return;
    }
    
    alert("저장 성공");
};

해당하는 DOM의 current를 focus해준다는 뜻으로 꼭 current를 붙여줘야 한다.

  • return을 넣는 이유는 if문이 실행되고 함수가 종료되게 하기 위해서이다.
profile
As I start to move towards the goal, the goal will start to move towards me.

0개의 댓글