import React, { useState } from 'react';

const Info = () => {

    const [name , setName] = useState("");
    const [nickname, setNickname] = useState("");

    const onChangeName = (e) =>
    setName(e.target.value)
     console.log("렌더링이 완료 되었습니다.");
    console.log({name}); 

    const onChangeNickName = (e) =>
    setNickname(e.target.value)
    return (
        <div>
            <h1>이름 :{name}</h1>
            <h1>닉네임 : {nickname}</h1>

            <input type="text" value={name} onChange={onChangeName} />
            <input type="text" value={nickname} onChange={onChangeNickName} />
        </div>
    );
};

export default Info;

onChange 이벤트

 

이름 칸에 입력을 하면 console에 값이 나오게 했다.

 

근데 닉네임 칸에 값을 입력했는데,

console에 값이 나온다..

 

왜?

 

화살표 함수 말고

function 으로 하니깐 다시 괜찮아짐

function onChangeName(e){
        
        setName(e.target.value)
        console.log("렌더링이 완료 되었습니다.");
    console.log({name}); 

    }

 

알고보니

 

 const onChangeName = (e) => 
    setName(e.target.value)
     console.log(" name 렌더링.");
    console.log({name}); 

------------------------------------------
const onChangeName = (e) => {
    setName(e.target.value)
     console.log(" name 렌더링.");
    console.log({name}); 

};

중괄호를 안했다.. 중괄호를 하면

렌더링할 때 name 칸에 입력한 것만 (자기 것만 렌더링 된다.)

 

그리고 이렇게 중괄호를 하면

 

렌더링 될 때 마다 특정 작업을 수행하지 않는다.

 

ㅇㅇ를 입력했는데,  아직 작업은 o 만하고 있다.

 

 


UseEffect

렌더링 될 때마다 특정 작업을 수행한다.

 

 useEffect(() => {
        console.log("렌더링 완료")
        console.log({name, nickname});
    });

 

 

 


 

마운트 될 때만 실행하고 싶을 때

useEffect에서 설정한 함수를 컴포넌트가 화면에 맨 처음 렌더링 될 때만 실행하고,

업데이트될 때는 실행하지 않으려면 함수의 두번째 파라미터로 빈 배열을 넣어주면 된다.

 

useEffect(() => {
        console.log("렌더링 완료")
        console.log({name, nickname});
    } ,[]);

인풋을 수정해도 컴포넌트가 처음 나타날 때만 콘솔에 문구가 나타나고,

그 이후에는 나타나지 않는다.

 

 


특정 값이 업데이트 될때만 실행하고 싶을 때

 

useEffect의 두번 째 파라미터로 전달되는 배열 안에 검사하고 싶은 값을 넣어준다.

useEffect(() => {
        console.log("렌더링 완료")
        console.log({name, nickname});
    } ,[name]);

name 인풋을 수정 할 때 콘솔에 작업이 수행 된다.

'react' 카테고리의 다른 글

react 컴포넌트 스타일링- css Module  (0) 2020.12.15
styled-components 설치 (css 사용)  (0) 2020.12.09
JSX 문법  (0) 2020.12.08
e.target 활용하기  (0) 2020.12.07
리엑트의 이벤트(Event)  (0) 2020.12.07

+ Recent posts