2017-10-13 15 views
1

我有一種情況,在我有兩個事件像onClick & onSelect,我有兩個相同的事件處理程序。我想知道在這些情況下寫什麼是最好的方法,我們應該編寫一個通用方法,然後根據事件類型調用事件處理程序,或者在事件處理程序相同的情況下可以使用一些語法。 只是想盡量節省一些代碼。也請考慮一個情況,我有四個事件和相同的事件處理程序的所有。如何爲反應中的兩個或多個事件添加一個事件偵聽器

<HAComboLink 
    label= {toI18Text(intl, "edit")} 
    value="edit" 
    onClick={onEditCustomFieldClick(id)} 
    onSelect={onEditCustomFieldClick(id)} 
    id="edit" 
> 
    <HAItem id="makeInactive" value="active" tabIndex="0"> 
    {toI18Text(intl, "make.inactive.label")} 
    </HAItem> 
</HAComboLink> 
+1

不是真的可行。即使你有某種全局的偵聽器,那也只會在你的代碼中添加更多的行,而不會爲你節省任何代碼。 – Chris

+0

是的,這是正確的:) – Gautam

+0

唯一的想法,我能想到的,如果線對你來說真的很重要,將有一個函數調用你的函數。所以像'onClick = {x(id)} onSelect = {x(id)}'然後有'x()'調用'onEditCustomFieldClick(id)'....'但是呃......似乎沒有必要? – Chris

回答

0

我經常看到的模式是在每個單獨的事件處理函數中調用「通用」處理函數。

<Component onBlur={this.handleBlur} onInput={this.handleInput} /> 

handleBlur = event => this.emitChange(event) 

handleInput = event => this.emitChange(event) 

emitChange = event => //do some common task 
相關問題