728x90

 React의 이벤트 핸들러

 

React에서 이벤트 핸들러를 다룰 때, 보통 다양한 이벤트 핸들러를 사용할 수 있습니다.

   1. `onClick` 이벤트 핸들러

    onClick 이벤트 핸들러는 **사용자가 클릭할 때 실행됩니다. 아래의 예시에서 handleClick 메서드는 버튼이 클릭될 때 호출됩니다

			import React from 'react';
			
			const Component = () => {
			  const handleClick = () => {
			    console.log('Button clicked!');
			  };
			
			  return <button onClick={handleClick}>Click Me</button>;
			};
			
				export default Component;

 

2. onChange 이벤트 핸들러

		import React, { useState } from 'react';
		
		const Component = () => {

		  const [inputValue, setInputValue] = useState('');
		
		  const handleChange = (event) => {
		    setInputValue(event.target.value);
		    console.log('입력 값이 변경되었습니다:', event.target.value);
		  };
		
		  return <input type="text" value={inputValue} onChange={handleChange} />;
		};

 

 

onChange 이벤트 핸들러는 사용자가 입력 필드나 선택 옵션을 변경할 때 실행됩니다. 아래의 예시에서 handleChange 메서드는 입력 필드의 값이 변경될 때 호출됩니다

3. onSubmit 이벤트 핸들러

		import React from 'react';
		
		const Component = () => {
		  const handleSubmit = (event) => {
		    event.preventDefault();
		    console.log('제출 완료 !');
		  };
		
		  return (
		    <form onSubmit={handleSubmit}>
		      <button type="submit">Submit</button>
		    </form>
		  );
		};

 

onSubmit 이벤트 핸들러는 폼(form)이 제출될 때 실행됩니다. 아래의 예시에서 handleSubmit 메서드는 폼이 제출될 때 호출됩니다

 


💡 State의 특징

 

🌟 React에서 상태를 업데이트할 때, 새로운 상태를 만들기 위해 불변성(Immutability)을 유지해야 합니다. 이렇게 함으로써 React는 상태의 변화를 감지하고 적절한 업데이트를 수행할 수 있습니다.

만약 기존 상태와 새로운 상태가 동일하다면(값이 같다면), React는 이를 최적화하여 렌더링을 방지할 수 있습니다. React에서 상태를 업데이트할 때
상태 변경 함수에 전달하는 인자가 이전 상태와 동일하다면, React는 렌더링을 건너뛰어 성능을 최적화합니다.

그러나 주의해야 할 점은 객체나 배열과 같은 복합 데이터 타입을 다룰 때입니다. 객체나 배열은 참조 타입이기 때문에 동일한 내용을 가지더라도 메모리에 저장된 위치가 다를 수 있습니다.
따라서 객체나 배열의 경우 새로운 객체 또는 배열을 생성하여 업데이트해야 합니다.

const [user, setUser] = useState({ name: '푸바오', age: 10 });

const handleAgeChange = () => {
  setUser({ ...user, age: user.age + 1 }); // 이전 상태와 동일한 내용을 갖는 새로운 객체를 생성하여 업데이트합니다.
};

 

위의 코드에서 setUser({ ...user, age: user.age + 1 })는 이전 상태의 내용을 유지한 새로운 객체를 생성하면서 나이 필드를 업데이트합니다. 이렇게 하면 React는 상태가 실제로 변경되었음을 감지하고 렌더링을 수행합니다.

 


Spread Operator (스프레드 연산자)

 

[...data]는 JavaScript의 스프레드 연산(Spread Operator)입니다. 이 연산자는 배열이나 객체의 요소들을 개별 요소로 분해하거나 복사할 때 사용됩니다.

React에서 주로 사용되는 상황 중 하나는 상태(State)나 프로퍼티(Props)를 업데이트할 때 이 연산자를 사용하여 배열을 수정하는 것입니다.

  ✍️ 배열에 새로운 요소를 추가하거나 기존 요소를 제거하면서 배열을 변경하고 싶을 때 확산 연산자를 사용할 수 있습니다.**

    const newData = [...data, newItem];

위 코드는 data 배열의 모든 요소를 펼쳐서(...data) 새로운 배열을 생성하고, 그 뒤에 newItem을 추가한 새로운 배열을 만듭니다. 기존 배열 data를 변경하지 않고 새로운 배열을 생성하는 것이기 때문에 불변성(Immutability)을 유지하게 됩니다.

 

또한, 배열에서 요소를 제거하고 싶을 때도 확산 연산자를 사용할 수 있습니다. 예를 들어, 특정 요소를 제거한 새로운 배열을 생성하고자 할 때는 다음과 같이 사용할 수 있습니다

   ✍️ data 배열에서 idToRemove와 일치하지 않는 요소들만 남겨서(filter 함수를 사용) 새로운 배열을 생성합니다.**

        const updatedData = data.filter(item => item.id !== idToRemove);

 

스프레드 연산자는 객체에서도 사용할 수 있습니다. 객체의 속성을 복사하거나 새로운 속성을 추가하고자 할 때 사용됩니다. 객체에서의 사용법은 다음과 같습니다

const originalObject = { key1: 'value1', key2: 'value2' };
const updatedObject = { ...originalObject, newKey: 'newValue' };

✍️ originalObject 객체의 모든 속성을 복사하여(...originalObject) 새로운 객체를 생성하고, 
    그 뒤에 newKey와 newValue 속성을 추가한 새로운 객체를 만듭니다.

 

 

728x90
반응형

'[FRONTEND] > REACT' 카테고리의 다른 글

[REACT] 기본 문법_Object 자료형 , Route  (1) 2023.10.22
[REACT] 기본 문법_Props !  (1) 2023.10.20
[REACT] 기본 문법_컴포넌트 문법 & Map( ) 함수  (0) 2023.10.12
[REACT] 시작하기  (1) 2023.10.03
[REACT] REACT 시작하기  (0) 2023.10.03

+ Recent posts