javascript - 将回调传递给javascript中的其他函数
问题描述
所以我认为我对回调有很好的掌握,this
直到我开始学习反应中的事件处理程序。
我知道下面的代码有onFormSubmit
一个回调函数,在用户提交表单时被调用。但是作为回调函数是一个作为参数传递给另一个函数的函数,我想知道哪个函数正在调用这个函数。
class SearchBar extends React.Component{
state={term:""};
onFormSubmit = ()=>{
//do something with callback
}
render(){
return (
<div className="search-bar ui segment">SearchBar
<form onSubmit={this.onFormSubmit} className="ui form">
<div className="field">
<label>Video Search</label>
<input
type="text"
value={this.state.term}
onChange={this.onInputChange}
/>
</div>
</form>
</div>
);
}
}
解决方案
您的搜索栏类有一些将被渲染的 jsx。在这个 JSX 中,您有一个名为onSubmit
. 然后为该属性分配一个类型为 function的 JSX 表达式。DOM 元素具有 EventListener,它们可以附加处理程序。如果你要使用 vanilla JS 为元素分配一个添加事件监听器,它会像这样。
let el = document.getElementById('test')
el.addEventListener('click',yourHandlerFunction);
React 只是获取你的函数并将其包装在SyntheticEvent中,然后将其附加到属性所在的元素上。在这种情况下,您的表单元素。它的工作方式与任何其他 DOM 事件一样,只是您将其包装在SyntheticEvent中。该元素现在正在侦听您描述的事件,在您的情况下是onSubmit并且每当执行此操作时,事件都会收到通知并调用适当的处理程序函数。它与观察者模式非常相似。
推荐阅读
- php - 通过“X-Powered-By”缺少反 CSRF 令牌和服务器泄漏信息:如何设置?
- google-cloud-platform - Terraform:“创建防火墙时出错:googleapi:错误 403:需要‘compute.firewalls.create’”
- java - 在 Java 方法中声明的任何内容都是本地的(某些特殊情况除外),对吗?
- windows - 在 Windows Powershell 中创建别名
- css - React NavLink:添加到内部标签的边距不可点击
- azure - 通过 Internet 从 AKS 专用集群访问 Pod
- image - U Net中keras中的多尺度分割掩码输出
- deep-learning - 下列关于 Softmax 函数的选项中哪些是正确的?
- java - Oracle Apex ords 安装
- java - 为什么Min和Max num不更新