React는 자동 완성을 렌더링하지 않습니다.


83

반응을 렌더링하려면 어떻게해야합니까?

<input
    id={field.name}
    className="form-control"
    type="text"
    placeholder={field.name}
    autocomplete="off"
    {...field}/>

답변:


158

대문자 "C" autoComplete. 이것은 React 문서에 언급되어 있습니다.

https://facebook.github.io/react/docs/tags-and-attributes.html


16
조용히 오류를 무시하는 것이 아니라 항상 예외를 발생시킵니다.
Yaroslav

1
@Yaroslav React가 이에 대한 경고를 던질 수 있습니다. 그렇지 않은 경우 github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/…
azium

1
그러나 또한 props는 무엇이든 될 수 있기 때문에 오류가 아닙니다. React는 자신의 prop을 만들거나 html 속성을 사용할 때 어떻게 알 수 있습니까?
azium

소품은 html 태그에 대해 아무것도 될 수 없습니다.
Yaroslav

왜 그렇다고 생각하는지 이해하지만 이러한 JSX 태그는 태그 유형을 나타내는 문자열을 사용하여 함수 호출로 변환된다는 것을 기억하십시오.
azium

67

다음을 넣어야합니다.

autoComplete="new-password"

자동 완성이 제거됩니다.


13
나는 이것이 "off"대신 왜 작동하는지 정말로 이해하지 못한다. 기묘한.
Ajay


@Pim 말이 되네요. 감사!
Ajay

1
당신은 전설입니다, 감사합니다! D : 또한 그것은 의미, 내가 원하는 내 새로운 암호 필드가 자동 완성되지 않을 수 있습니다
에릭 쿠비

아마도 크롬은 new이름 내에서 인식하고 있습니다. autoComplete="new-off"암호 필드가 아니고 잘 작동하는 경우 좀 더 이해하기 쉬운 이름을 지정했습니다 . D
kenny

7

Mozilla 문서 에 따르면 자동 완성 기능을 실제로 해제하려면 잘못된 값을 설정해야합니다. 일부 브라우저에서는 속성이 꺼짐으로 설정되어 있어도 자동 완성 제안이 계속 제공됩니다.

이것은 나를 위해 일했습니다 (react-bootstrap).

<FormControl
  value={this.state.value}
  autoComplete="nope"
  {...props}
/>

와, 이상하네요.하지만 지금까지 저에게 효과가 있었던 유일한 것입니다.
Wylliam Judd

1
@Pim 음이 동일 autocomplete하고 autofill? Chrome을 사용하는 경우 작동하지 않기 때문입니다. 동일한 양식으로 전송 된 이전 값으로 양식을 계속 자동으로 채 웁니다.
alexventuraio

6

정답을 읽었으나 여전히이 문제가있는 경우 (특히 Chrome에서) 클럽에 오신 것을 환영합니다 ... 그러니 어떻게 수행했는지 확인하십시오.

<form autoComplete="new-password" ... >
        <input name="myInput" type="text" autoComplete="off" id="myInput" placeholder="Search field" />
</form>

메모

  • form이 반드시 입력 요소의 직접 부모 일 필요는 없습니다.
  • 입력에는 이름 속성이 필요합니다.
  • 또한 React-Bootstrap <FormControl/>태그 와 함께 작동합니다 (대신 <input/>).

작동하지 않습니다. Chrome 67로 시도하고 있습니다. 여전히 디스플레이가있는 가짜 입력이 필요합니다. 없음! 아주 미쳤어!

의견을 보내 주셔서 감사합니다. 귀하의 케이스가 3 개의 글 머리 기호를 모두 표시합니까?
w3jimmy

어떤 경우에는 여전히 이것으로 자동 제안을 받고있었습니다. 더 완전한 솔루션은 내 대답을 참조하십시오.
Pim

5

이 솔루션 중 어느 것도 Chrome 80에서 실제로 작동하지 않았습니다.

몇 시간의 시행 착오 끝에 매우 이상한 해킹이 저에게 효과적이었습니다.

  1. autoComplete="none"각각에 추가 <input>-Google은 이제 autocomplete = "off"를 건너 뜁니다.
  2. 컨테이너에 필드를 래핑합니다. <form>또는<div>
  3. 와 함께 유효한 입력 필드가 하나 이상 필요합니다 autoComplete="on". 컨테이너의 마지막 요소 여야합니다. 그래서 양식 하단에 다음 입력 필드를 추가했습니다.
<input 
  type="text" 
  autoComplete="on" 
  value="" 
  style={{display: 'none', opacity: 0, position: 'absolute', left: '-100000px'}} 
  readOnly={true}
/>

3

autoComplete = "none"-저에게 적합합니다.


2
Alex를 환영합니다. 답을 더 자세하게 작성하십시오. "autoComplete"대소 문자 때문에 솔루션이 작동한다는 사실을 확인하는 것이 중요합니다.
Jennifer Goncalves 2019

1

Chrome 자동 완성 지옥은 new-password 속성을 추가하여 해제됩니다.

autoComplete="new-password"

실제로는 다음과 같습니다.

<input            
type="password"
autoComplete="new-password"
/>

더 많은 토론 :

Chrome 자동 완성 토론


0

@azium의 답변 외에도 태그 <input>안에 넣어야 작동합니다.<form>autoComplete



0

나는 또한 많은 옵션을 시도했지만 결국 <form>태그를 <div>태그 로 바꾸고 해당 양식에있는 각 입력을 수동으로 관리하는 것입니다.


0

"내 컴퓨터에서 작동합니다"입니다.

Chrome 버전 83.0.4103.116 및 React. 나를 위해 일한 트릭은 양식 안에 넣고 autoComplete 속성을 추가하는 것입니다. 알림 반응이없는 앱에서이 작업을 시도하면 소문자 C로 자동 완성해야합니다.

 <form autoComplete="off">
      <input type="text" autoComplete="new-password" />
 </form>

<form autoComplete="new-password">
  <input type="text" autoComplete="new-password" />
</form>

0

예, 여기와 다른 곳에서 제안 된 대부분은 2020 년 12 월에 실패했습니다.
양식 래퍼, 자동 완성을 "newpassword"(둘 다 작동하지 않음)의 "off"로 설정하고 onFocus를 사용하여 autoComplete를 사용하는지 확인하고 자동 완성은 아니지만 (대문자가 아님) 도움이되지 않았습니다.

결국 mscott2005 접근 방식은 저에게 효과가 있었지만 (+1) 다른 사람들에 대한 답변으로 게시하는 더 최소한의 예를 위해 조정했습니다.

양식이 필요하지 않으며 두 개의 입력 태그 만 있으면됩니다.

  • autocomplete = "off" 원하는 필드에

    <input ... autoComplete="off" />

  • autocomplete = "on" 가짜 은신처에

    <input

    id="fake-hidden-input-to-stop-google-address-lookup"
    autoComplete="on"
    style={{ display: 'none'}}>
    

ID는 주석을 사용하지 않고 실제로 해킹이 무엇인지 문서화하는 데 가장 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.