> 웹 프론트엔드 > JS 튜토리얼 > ReactJS에서 \'제어되지 않은 입력에서 제어된 입력으로의 전환 오류\'를 방지하는 방법은 무엇입니까?

ReactJS에서 \'제어되지 않은 입력에서 제어된 입력으로의 전환 오류\'를 방지하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-10-25 14:05:30
원래의
884명이 탐색했습니다.

How to Avoid the

ReactJS에서 제어되지 않은 입력에서 제어된 입력으로의 전환 오류

React는 제어되지 않는 입력 요소와 제어되는 입력 요소 사이를 전환하는 것에 대해 경고합니다. 이 오류는 일반적으로 입력 필드가 처음에 사용자 입력을 자유롭게(비제어) 수락한 다음 개발자가 나중에 상태(제어)를 통해 해당 값을 제어하려고 시도할 때 발생합니다.

코드 조각:

오류는 다음 코드로 설명됩니다.

<code class="javascript">constructor(props) {
  super(props);
  this.state = {
    fields: {},
    errors: {}
  }
}

onChange(field, e){
  let fields = this.state.fields;
  fields[field] = e.target.value;
  this.setState({fields});
}

render() {
  return(
    <div className="form-group">
      <input
        value={this.state.fields["name"]}
        onChange={this.onChange.bind(this, "name")}
        className="form-control"
        type="text"
        refs="name"
        placeholder="Name *"
      />
    </div>
  )
}</code>
로그인 후 복사

근본 원인:

이 코드에서 문제는 필드가 초기 상태에 있습니다. 빈 개체로 초기화됩니다. 구성 요소가 처음 렌더링되면 this.state.fields.name이 정의되지 않아 입력이 제어되지 않는 구성 요소가 됩니다. 그러나 사용자가 값을 입력하면 필드가 업데이트되어 입력이 제어됩니다.

가능한 해결 방법:

이 오류를 해결하려면 다음 두 가지 옵션이 있습니다.

  1. 기본값으로 필드 초기화:

    기본값으로 초기 상태의 필드 정의:

    <code class="javascript">this.state = {
      fields: {name: ''}
    }</code>
    로그인 후 복사
  2. 단락 평가 사용:

    this.state.fields.name이 정의되지 않은 경우 기본값을 제공하려면 value 속성에서 단락 평가를 사용하세요.

    <code class="javascript"><input value={this.state.fields.name || ''} /></code>
    로그인 후 복사

위 내용은 ReactJS에서 \'제어되지 않은 입력에서 제어된 입력으로의 전환 오류\'를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿