我有一个LoginForm组件。我要检查之前提交,这两个loginName
和password
设置。我尝试使用此代码(省略了很多内容):
class LoginForm extends Component {
constructor() {
super();
this.state = {
error: "",
loginName: "",
password: "",
remember: true
};
}
submit(e) {
e.preventDefault();
if(!this.state.loginName || !this.state.password) { //this is null
this.setState({ error: "Fill in both fields" });
} else {
console.log("submitting form");
}
}
render() {
return (
<div className="col-xs-12 col-sm-6 col-md-4">
<form className="login" onSubmit={this.submit}>
<button type="submit" className="btn btn-default">Sign in</button>
</form>
</div>
);
}
}
export default LoginForm;
但是,我TypeError
在事件处理程序中得到一个,说this
是空的。
我该怎么办?
你需要设置this
的submit
方法,因为现在this
是undefined
,对于此操作,您可以使用.bind
onSubmit={ this.submit.bind(this) }
Example
或者您可以使用箭头功能
onSubmit={ (e) => this.submit(e) }
Example
问题内容: 由于某些原因,此值在反应事件处理程序中丢失。阅读我认为有反应的文档在这里做了一些工作,以确保将其设置为正确的值 以下内容不符合我的预期 但这确实是: React和ES6对我来说是新手,但这似乎不是正确的行为? 问题答案: 如果使用新语法,这对于JavaScript和React是正确的行为。 自动绑定功能不适用于 v0.13.0中的ES6类。 因此,您需要使用: 或其他技巧之一:
主要内容:实例,向事件处理程序传递参数React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑定属性的命名采用驼峰式写法,而不是小写。 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM 元素的写法) HTML 通常写法是: React 中写法为: 在 React 中另一个不同是你不能使用返回 false 的方式阻止默认行为, 你必须明确使用 preventDefa
事件就是用户或浏览器自身执行的某种动作。诸如click、load 和mouseover,都是事件的名字。而响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以"on"开头,因此click 事件的事件处理程序就是onclick,load 事件的事件处理程序就是onload。为事件指定处理程序的方式有好几种。 13.2.1 HTML事件处理程序某个元素支持的每种事件,都可以使用一
我在主页组件中有这个代码,当按下向下/向上箭头键时,什么也没有发生。我刚刚意识到,当用ctrl键按箭头键时,eventhandler可以正常工作。我到处找,但什么也没找到。有人能帮忙吗?我的浏览器是Chrome v.96。React版本17.0.2,节点v.16.13.1
我试图理解在Azure Function v2函数中使用EventGridTrigger时EventGrid的行为。此页面(在MS官方文档中)详细说明了与事件处理程序返回的状态代码相关的特定行为,但没有具体说明正在使用什么类型的事件处理程序。基于状态代码的使用,我只能假设它是用于webhook的。但是,Azure门户中的订阅配置具有Azure功能的事件处理程序。使用此事件处理程序时,如何从azur