簡體   English   中英

如何在具有更多參數的函數中使用e.preventDefault()?

[英]How can I use e.preventDefault() in a function with more parameters?

我正在React中處理表單,我需要使用event.preventDefault。 同時,我還需要將其他參數傳遞給父函數。 我嘗試使用下面的代碼正常添加它們,但是似乎不起作用; 我怎樣才能做到這一點? 我已經看過其他問題,但沒有找到解決方案的運氣。

handleSubmit = (event, param1, param2) => {
    event.preventDefault();

    this.setState(prevState => {
        // piece of code where i need to use the other parameters    
   }); 
}

這樣的事嗎?

<div onClick={(event)=> handleSubmit(event, param1, param2)}></div>

在合成事件和事件池上閱讀此文章,以了解為什么它不能按您期望的方式工作: https : //reactjs.org/docs/events.html

但是,您可以將參數傳遞給事件處理程序調用的函數。 例如:

handleClick(param1, param2){
   // no need to preventDefault here, you can't anyway, since you called it in onClick
   this.setState(prevState=> {
       // do something with param1 and param2
   })

render() {
    const param1 = "someVal";
    const param2 = 0;
    return <div onClick={e=> { e.preventDefault(); this.handleClick(param1,param2)} }/>
}

要獲取事件和附加參數,您需要使用閉包。

 const btn = document.querySelector('button'); function callback(name) { return function(e) { e.preventDefault(); console.log(e.target.id); console.log(name); document.querySelector('#name').innerText = name; }; } btn.addEventListener('click', callback('Paul')); 
 <form action="#"> <div id="name"></div> <button id="test" type="submit">Submit</button> </form> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM