javascript - React 和文本输入 - 使用 onBlur 还是 onChange?

标签 javascript reactjs

我正在处理一个包含大约 6 个文本输入字段的表单。

为了将值保存到我的状态,这样做是 onBlur 还是 onChange 更好?

例如onChange,

onChangeTextInput = ({ name, value }) => {
    this.setState(state => ({
      ...state,
      form: {
        ...state.form,
        [name]: value
      }
    }));
  };

每次按下一个键都会更新状态。当我使用 react 工具“显示更新”时,由于该字段更新了多少次,我看到了大量更新。

我应该改用 onBlur 来避免这种情况吗?或者有没有办法“批量”更新状态?

谢谢

最佳答案

所以这取决于你想要的场景:)

OnBlur 只会在用户点击字段外时触发,如果这不是您的正确用户体验,我的建议是使用输入延迟(也称为去抖动)!很好地拨入后非常酷。

我不会直接给你代码,因为它是一个非常有用的工具,可以在未来正确理解,但请查看:

从'throttle-debounce'导入{debounce};

曾经有很多这样的包,但它所做的是在你的构造函数中设置一个函数超时:

this._updateValues = debounce(500, this._updateValues);

每次调用此函数时,它会在运行前等待 500 毫秒,但如果在该时间范围内再次调用它,计时器将被重置:)

关于javascript - React 和文本输入 - 使用 onBlur 还是 onChange?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52509068/

相关文章:

css - bootstrap 4 中心标题和右对齐按钮全部在一排

javascript - 将填充应用于段落的最后一行

javascript - 如何解决,craco : *** Cannot find ESLint loader (eslint-loader). *** ANTd 和 React 错误 (2021)

javascript - Chrome 使用 Css-element-queries 缩放图像错误

javascript - 无法从 JS 中的 document.cookie 访问 cookie,但浏览器显示 cookie 存在

javascript - Jade 中的用户提示

javascript - 为什么 Mocha 测试不在 Travis 上运行,而是在本地运行?

javascript - 为什么兄弟 div 在调整大小时跳到新行?

reactjs - jsPDF , TypeError : pdf. fromHTML 不是 REACT 中的函数

javascript - React JS 嵌套条件,.map() 出现意外错误