javascript - 将回调传递给 JavaScript 中的其他函数

标签 javascript reactjs callback this

所以我认为我对回调和 this 有了很好的掌握,直到我开始学习 React 中的事件处理程序。

我知道下面的代码有一个函数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 的属性。然后为该属性分配一个函数类型的 JSX 表达式。 DOM 元素具有事件监听器,它们可以附加处理程序。如果你要使用 vanilla JS 为一个元素分配一个添加事件监听器,它会像这样。

let el = document.getElementById('test')
el.addEventListener('click',yourHandlerFunction);

React is only taking your function and wrapping it in a SyntheticEvent然后将其附加到该属性所在的元素上。在本例中是您的表单元素。它的工作方式与任何其他 DOM 事件一样,只是您将其包装在 SyntheticEvent 中。 该元素现在正在监听您所描述的事件,在您的情况下是 onSubmit ,每当执行此操作时,事件都会收到通知并调用适当的处理程序函数。它与 Observer Pattern 非常相似。 .

check out how events get attached in plain HTML properties

Also you might be interested in the Event Interface as it the base of all other events.

关于javascript - 将回调传递给 JavaScript 中的其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59828383/

相关文章:

javascript - 你如何在 Javascript 中使用 onPageLoad?

reactjs - React 意外的 token < - babel loader

reactjs - mui 组件 props,响应式设置

reactjs - 为什么在react的 "useState"钩子(Hook)中一遍又一遍地设置初始状态

javascript - 无法在 $.post 回调中设置作用域变量

javascript - 并排显示两列javascript

javascript - 访问受限 URI 被拒绝”代码 : "1012

javascript - 使用 this.state 在渲染中设置状态

java - 没有回调接口(interface)的AsyncTask

c++ - C++ 中安全异步回调的模式