본문 바로가기
Front end/React

[React] 폼 관리하기

by 더 이프 2024. 4. 1.
728x90

목차

    React에서 폼 관리하기: 사용자 입력 처리의 모범 사례 📝✨

    안녕하세요, 웹 개발을 사랑하는 모든 분들! 사용자 입력은 웹 애플리케이션과 상호작용하는 데 있어 필수적인 부분입니다. React에서 폼과 사용자 입력을 효율적으로 관리하는 것은 애플리케이션의 반응성과 사용자 경험을 크게 향상시킬 수 있습니다. 이번 포스트에서는 React에서 폼 관리의 기본부터 모범 사례까지 다루어보겠습니다.


    React에서의 폼 관리 기본

    React에서 폼을 관리하는 두 가지 주요 방법은 제어 컴포넌트(Controlled Components)비제어 컴포넌트(Uncontrolled Components)입니다.

    제어 컴포넌트

    제어 컴포넌트에서는, React 컴포넌트가 폼 데이터의 소스를 제어합니다. 이는 폼의 현재 값(state)을 React의 state에 저장하고, setState()를 사용하여 폼을 업데이트하는 방식으로 동작합니다.

    class NameForm extends React.Component {
      constructor(props) {
        super(props);
        this.state = {value: ''};
    
        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
      }
    
      handleChange(event) {
        this.setState({value: event.target.value});
      }
    
      handleSubmit(event) {
        alert('A name was submitted: ' + this.state.value);
        event.preventDefault();
      }
    
      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Name:
              <input type="text" value={this.state.value} onChange={this.handleChange} />
            </label>
            <input type="submit" value="Submit" />
          </form>
        );
      }
    }

    비제어 컴포넌트

    비제어 컴포넌트에서는, DOM 자체가 폼 데이터의 소스를 제어합니다. 이는 ref를 사용하여 폼의 DOM 노드에 직접 접근하는 방식으로 동작합니다. 비제어 컴포넌트는 때때로 더 쉬운 통합과 코드 간소화를 위해 사용됩니다.

    class NameForm extends React.Component {
      constructor(props) {
        super(props);
        this.input = React.createRef();
      }
    
      handleSubmit = (event) => {
        alert('A name was submitted: ' + this.input.current.value);
        event.preventDefault();
      }
    
      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Name:
              <input type="text" ref={this.input} />
            </label>
            <input type="submit" value="Submit" />
          </form>
        );
      }
    }

     

    폼 검증

    폼을 사용할 때 사용자 입력의 검증은 필수적입니다. 제어 컴포넌트에서는 입력 값 변경 시 setState() 호출 전에 검증 로직을 추가함으로써 입력 값을 검증할 수 있습니다.

     

    모범 사례

    1. 상태 불변성 유지: 폼 상태를 업데이트할 때는 항상 불변성을 유지하도록 새로운 상태 객체를 생성해야 합니다.
    2. 모든 입력을 컴포넌트의 상태로 관리: 제어 컴포넌트 방식을 사용할 때, 폼의 모든 입력을 컴포넌트의 상태로 관리하여 일관성을 유지합니다.
    3. 폼 제출 처리: 폼 제출 시에는 event.preventDefault()를 호출하여 페이지 리로드를 방지하고, 상태 또는 ref를 사용하여 폼 데이터를 처리합니다.

    마무리하며...

    React에서 폼과 사용자 입력을 관리하는 것은 다소 복잡할 수 있지만,

    이 글에서 소개된 기본 원칙과 모범 사례를 따른다면 더욱 효과적인 폼 관리가 가능할 것입니다. 사용자와의 상호작용이 중요한 웹 애플리케이션을 구축할 때, 이러한 지식이 여러분에게 큰 도움이 될 것입니다. 폼 관리를 마스터하여 사용자에게 더 나은 경험을 제공하세요!