React不会渲染自动完成功能

Yar*_*lav 61 html reactjs

我如何做出反应渲染呢?

<input
    id={field.name}
    className="form-control"
    type="text"
    placeholder={field.name}
    autocomplete="off"
    {...field}/>
Run Code Online (Sandbox Code Playgroud)

azi*_*ium 112

资本"C" autoComplete.这在React文档中提到:

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

  • 总是抛出异常,而不是只是默默地忽略错误. (15认同)
  • 而且,这不是错误,因为 props 可以是任何东西.. React 如何知道您何时创建自己的 prop 或使用 html 属性? (2认同)

JpC*_*row 44

你应该把:

autoComplete="new-password"
Run Code Online (Sandbox Code Playgroud)

这将删除自动完成功能

  • 我真的不明白为什么这样做而不是"关闭".奇怪的. (11认同)
  • @AjayGupta https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion (2认同)
  • 也许 chrome 正在识别名称中的“new”。我现在将其命名为 `autoComplete="new-off"` 如果它不是密码字段并且工作正常,这对我来说更有意义:D (2认同)

Pim*_*Pim 14

根据Mozilla 文档,您必须设置一个无效值才能真正关闭自动完成功能。在某些浏览器中,即使该属性设置为关闭,仍会提供自动完成建议。

这对我有用(反应引导):

<FormControl
  value={this.state.value}
  autoComplete="nope"
  {...props}
/>
Run Code Online (Sandbox Code Playgroud)

  • @Pim 嗯,“自动完成”和“自动填充”是一样的吗?因为它对我使用 Chrome 不起作用。它会不断使用同一表单发送的先前值自动填充表单。 (3认同)

dev*_*ato 13

这是“它可以在我的机器上运行”

Chrome 版本 83.0.4103.116和 React。看起来对我有用的技巧是将其放入表单中并添加autoComplete属性。注意如果您在非 React 应用程序上尝试此操作,则必须使用小写 C 进行自动完成

 <form autoComplete="off">
      <input type="text" autoComplete="new-password" />
 </form>
Run Code Online (Sandbox Code Playgroud)

<form autoComplete="new-password">
  <input type="text" autoComplete="new-password" />
</form>
Run Code Online (Sandbox Code Playgroud)


Mic*_*ant 8

这里和其他地方的大多数建议在 2020 年 12 月都失败了。我想我尝试了所有这些:表单包装器,将自动完成设置为offnewpassword(都不起作用),使用 onFocus,确保我autoComplete在 React 中使用而不是autocomplete,但它们都没有帮助。

最后,mscott2005 的方法对我有用(+1),但我也对其进行了调整,以获得一个更简单的示例,我将其作为其他人的答案发布:

不需要表单,只需要两个输入标签:

id 是我在不使用注释的情况下记录真正的黑客攻击的最好方法。


小智 6

这些解决方案都没有真正适用于 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}
/>
Run Code Online (Sandbox Code Playgroud)


w3j*_*mmy 5

如果你已经阅读了正确的答案并且仍然存在这个问题(特别是在Chrome中),欢迎来到俱乐部...所以请检查我是如何完成它的:

<form autoComplete="new-password" ... >
        <input name="myInput" type="text" autoComplete="off" id="myInput" placeholder="Search field" />
</form>
Run Code Online (Sandbox Code Playgroud)

笔记

  • form不一定需要是input元素的直接父元素
  • 输入需要名称属性
  • 它也适用于React-Bootstrap <FormControl/>标签(而不是<input/>)


小智 5

autoComplete="none" - 对我有用。

  • 欢迎亚历克斯。尝试更详细地回答您的问题。由于“autoComplete”的大小写,强调您的解决方案有效很重要。 (3认同)