我的ReactMeteor照片组件在窗体内刷新页面
My ReactMeteor Photo component refreshes the page when inside a form
我有一个像这样的Photo组件:
Photo=ReactMeteor.createClass({
getInitialState:function(){
return({
photo:'Camera.png',
photoClass:'mouseChange'
});
},
takePicture:function(){
var that = this;
MeteorCamera.getPicture({}, function(error,data){
if(error){
alert(error.error);
}else{
that.setState({photo: data, photoClass:'pictureTaken'});
}
});
},
render:function(){
return(
<button>
<img src={this.state.photo} className={this.state.photoClass} onClick={this.takePicture}/>
</button>
);
}
});
当我在表单外使用它时,它会按预期工作。
然而,在表单中,它会在通常请求使用相机的权限时刷新页面。然后它还将页面的url更改为我从未配置过的内容。
在这两种情况下,我都添加了一个<Photo/>
标记。课堂上的改变是为了显示比相机按钮大一点的实际图片。
meteor@1.1.6mdg:camera@1.1.4reactjs:react@0.2.4
按钮单击时的默认行为是提交表单,这会导致刷新。您需要防止这种默认行为。点击事件处理程序(在您的例子中是takePicture方法)获取事件作为参数。您需要做的是调用event.prventDefault();
因此,你的takePicture方法的代码应该如下所示:
takePicture: function(event){
// This will prevent the refresh
event.preventDefault();
var that = this;
MeteorCamera.getPicture({}, function(error,data){
if(error){
alert(error.error);
}else{
that.setState({photo: data, photoClass:'pictureTaken'});
}
});
}
相关文章:
- 防止Iframe窗体在新窗口中打开
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- Meteor-将选定窗体中的对象添加到集合中
- 如何解决Yii中的页面刷新问题
- Jquery提交表单而不刷新
- 刷新页面后会出现警报
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 刷新后保留对网页的更改
- 如何在不刷新页面的情况下更新显示框
- 重定向时角度刷新浏览器
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- Javascript,输出结果后页面不断刷新
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 刷新父窗口后无法关闭窗口
- 从 CRM 4 中的模式对话框刷新父窗体 - 并不总是有效
- 子窗体关闭后刷新父页面
- 我的ReactMeteor照片组件在窗体内刷新页面
- 如何在 switch 语句后刷新窗体
- 如何在更新后刷新内容 .Net C# (EXT.net) Web 窗体应用程序