如果我只有基本表格,应该还是this.refs
还是选择document.getElementById
?
基本上,我的意思是:
export default class ForgetPasswordComponent extends React.Component {
constructor(props) {
super(props);
this.handleSendEmail = this.handleSendEmail.bind(this);
}
handleSendEmail(e) {
e.preventDefault();
// this.refs.email.value
// document.getElementById('email').value
}
render() {
<form onSubmit={this.handleSendEmail}>
<input id="email" ref="email" type="text" />
<input type="submit" />
</form>
}
}
在一个方面使用另一个方面有不利之处吗?
一般而言,refs
优于document.getElementById
,因为它与您的其余React代码更加一致。
作为响应,每个组件类都可以具有多个组件实例。
正如@Isuru在注释中指出的那样:使用id
很危险,因为react不能阻止您在一页上具有多个表单,然后DOM包含具有相同ID的多个输入。那是不允许的。
使用引用的另一个优点是,根据设计,您只能在定义它的上下文中访问引用。如果您需要访问此上下文之外的信息,这将迫使您使用道具和状态(以及可能的商店)。
这是一个优势,因为几乎没有机会破坏单向数据流,这将使代码的可管理性降低。
注意:在几乎所有情况下,都可以完全避免引用。这是Netflix 永远不 使用 参考
的设计原则,正如Netflix的高级用户界面工程师Steve McGuire所解释的那样,此视频来自reactjs conf
2016(视频中9:58m)。
在您的情况下,这意味着将电子邮件输入值置于表单状态,添加onChange处理程序,并在Submit事件中使用状态值。
问题内容: 当你应该使用与? 问题答案: 是W3C标准的专有Microsoft扩展。 是标准的-使用它。 但是,请考虑使用像jQuery这样的js库是否会派上用场。例如,相当于的jQuery 。另外,您不仅可以使用CSS3选择器。
问题内容: 这是: 与此相同: 鉴于jQuery已加载? 问题答案: 不完全是!! 在jQuery中,要获得与相同的结果,可以访问jQuery Object并获取该对象中的第一个元素(请记住JavaScript对象的行为类似于关联数组)。
在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?
问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。
连接的多个输入都相当于Yes的时候才会输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:10:00,响起猫叫声小闹钟 工作原理 当所有的输入都是Yes的时候,与节点才输出Yes。
问题内容: 似乎有三种 相同的 方法可以独立于平台获取依赖于平台的“文件分隔符”: 我们如何决定何时使用哪个? 它们之间甚至有什么区别吗? 问题答案: 可以通过调用命令行参数或使用命令行参数覆盖 获取默认文件系统的分隔符。 获取默认文件系统。 获取文件系统的分隔符。请注意,作为一种实例方法,在需要代码在一个JVM中对多个文件系统进行操作的情况下,可以使用该方法将不同的文件系统传递给代码(而不是默认