我有一个TouchableHighlight
包装了一个文本
块,当点击它时,会打开一个新的场景(我使用的是react native router flux)。
除了快速点击TouchableHighlight
之外,一切正常,场景可以渲染两次。
我想防止用户快速点击该按钮。
在本机中实现这一点的最佳方法是什么?我研究了手势应答器系统,但没有任何例子或类似的东西,如果你是新来的,像我一样,会让人困惑。
也许您可以使用0.22中为可触摸元素引入的新禁用功能?我在想这样的事情:
组成部分
<TouchableHighlight ref = {component => this._touchable = component}
onPress={() => this.yourMethod()}/>
方法
yourMethod() {
var touchable = this._touchable;
touchable.disabled = {true};
//what you actually want your TouchableHighlight to do
}
我自己都没试过。所以我不确定它是否有效。
以下工作原理是防止路由到同一路由两次:
import { StackNavigator, NavigationActions } from 'react-navigation';
const App = StackNavigator({
Home: { screen: HomeScreen },
Details: { screen: DetailsScreen },
});
// Prevents double taps navigating twice
const navigateOnce = (getStateForAction) => (action, state) => {
const { type, routeName } = action;
return (
state &&
type === NavigationActions.NAVIGATE &&
routeName === state.routes[state.routes.length - 1].routeName
) ? state : getStateForAction(action, state);
};
App.router.getStateForAction = navigateOnce(App.router.getStateForAction);
您要做的是限制分接回调,以便它们只运行一次。
这被称为节流,您可以使用下划线:以下是方法:
_.throttle(
this.thisWillRunOnce.bind(this),
200, // no new clicks within 200ms time window
);
下面是我的react组件的外观。
js prettyprint-override">class MyComponent extends React.Component {
constructor(props) {
super(props);
_.throttle(
this.onPressThrottledCb.bind(this),
200, // no new clicks within 200ms time window
);
}
onPressThrottledCb() {
if (this.props.onPress) {
this.props.onPress(); // this only runs once per 200 milliseconds
}
}
render() {
return (
<View>
<TouchableOpacity onPress={this.onPressThrottledCb}>
</TouchableOpacity>
</View>
)
}
}
我希望这对你有帮助。如果你想了解更多,请检查此线程。
我们的代码使用Asyncresttemplate如下所示
问题内容: 给定当前的CSS网格示例,如何折叠边框以避免出现双边框? 这是使用Html表实现的如此简单的事情。如何使用? 问题答案: 您可能会这样: 另一个想法是依靠渐变来填补空白,如下所示: 您还可以调整初始解决方案以使其更加灵活,并且可以在一行中处理任意数量的项目。 在整个页面上运行以下代码并调整窗口大小:
我希望得到一些关于我打算在ASP.NET MVC4应用程序中防止重复记录的方法的反馈,以及我对用户体验没有的冲击效果。 web表单有六个输入字段和一个保存按钮(以及一个取消按钮),用户可以花10分钟填写表单。
问题内容: 我想创建一个表来存储设备设置。该表具有三行:id,parameter_name和parameter_value。 该表是通过执行以下查询语句创建的: 然后通过执行以下方法存储行: 创建数据库后,将存储默认值: 但是,方法insertRow()的问题在于它无法防止重复输入。 有谁知道在这种情况下如何防止重复输入? 问题答案: 您可以使用列约束。 UNIQUE约束导致在指定列上创建唯一索引
问题内容: 在angular中,我们可以设置一个按钮来发送ajax请求,如下所示: 并在控制器中: 因此,为防止重复提交,我可以在单击按钮时将标志设置为buttonclicked = true,而在ajax回调完成时将其取消设置。但是,即使这样,控制权仍会归还给有角力的人,他们将更新Dom。这意味着有一个很小的窗口,在原始按钮单击完全100%完成之前,可以再次单击该按钮。 这是一个小窗口,但仍然可
问题内容: 发送XMLHttpRequest-s时是否可以防止浏览器遵循重定向(即,获取重定向状态代码并自己处理)? 问题答案: 不符合XMLHttpRequest对象的W3C标准(添加了重点): 如果响应是HTTP重定向: 如果Location头传达的URL的原点与XMLHttpRequest的原点是相同的原点,并且重定向不违反无限循环预防措施,请在遵循相同原点请求事件规则的情况下 透明地遵循重