javascript - React Native 在 Button 上设置了“冷却时间”
问题描述
我的问题是是否可以在用户按下的按钮上设置冷却时间,或者仅在 2 秒内注册 1 次按下。我正在使用与 REST API 和 PostgreSQL 数据库连接的 React Native (Expo)。
我的问题是我有一个将数据发送到数据库的按钮。OnPress 输入的值被 PUT 到数据库中,用户被导航到另一个屏幕,在那里他可以看到他的条目。
我注意到当用户足够快时,他可以按下按钮两次或 3 次,因此数据也会 2/3 次发布到数据库。
我需要一秒钟的冷却时间,所以数据只发布 1 次,因为导航几乎是立即发生的!
我在互联网上找不到任何关于此的内容。
谢谢~褪色
解决方案
目前我能想到的解决方案有两种,可能还有很多其他的解决方案。
解决方案1: 如果数据库调用已经完成,则有一些变量可以保留一个值,一旦您从数据库获得响应,您可以重置该变量并且用户可以再次按下该按钮。
就像是
onPress = {this.state.isPressed ? null : <this.writeTodatabase>}
和
writeTodatabase = () => {
this.setState({ isPressed:true })
// code to write to database
// once you have response from database you can set isPressed to false.
}
如果该变量为真,您也可以禁用按钮。
解决方案 2:您可以throttle
从lodash
库中使用。
推荐阅读
- node.js - 为什么 Electron 快速启动应用程序无法在我的 Ubuntu 实例上正确启动?
- java - android studio:java.lang.VerifyError:拒绝尝试子类型错误类java.awt.geom.Point2D的类java.awt.Point
- swiftui - Apple 建议的 .indexed() 属性如何在 ForEach 中工作?
- node.js - 如何总结一个月每天一条记录?
- terraform - Terraform azurerm_api_management_api 颠簸修订不应用所有必需的更改
- javascript - 如何在javascript中获取文件内容?
- typescript - Electron、TypeScript、绝对路径和最佳实践
- sql - 在 SQL 中生成随机数之前从未使用过
- reactjs - 使用 RSA OAEP React Native 加密字符串消息
- python - 如何在 Synology 上的 Docker 中运行 TensorFlow