2017-08-17 257 views
1

我想在HTML和React中使用時詢問有關事件處理程序的問題。HTML事件處理程序與React事件處理程序

在這本書中的Javascript和jQuery由喬恩·達克特寫的,作者提到,使用HTML事件處理程序的屬性被認爲是不好的做法 比如像下面這樣:

<button onClick="hide()">click me</button> 

但最近我開始學習反應和組件的定義時,也有用作屬性事件處理的例子很多,似乎普遍這樣做,不這樣做讓批評,

<button onClick={doSomething}> 
    xxxyyyzzz 
</button> 

有什麼理由這個?是因爲這是綁定React?中的事件處理程序的唯一方法,從我看到它的方式來看React基本上是通過HTML構建組件元素,但使用事件處理程序屬性爲它分配事件,因此爲什麼是React帶回被認爲是不好實踐的概念?

回答

2

爲什麼內聯事件監聽器不好實踐?

HTML描述了文檔的內容和結構,CSS描述了外觀,JavaScript描述了邏輯或行爲。這些東西應該分開保存。 HTML和JavaScript代碼不應混用。你的例子是:

<button onClick="hide()">click me</button> 

但是,這並不適用於React:我們沒有一個HTML文件。相反,我們有模塊化的組件,它們有自己的結構,風格和行爲。

在React中,我們不希望將表示和邏輯分離,而是自包含的組件。這就是使用「Vanilla JavaScript」/ DOM API的應用程序。

2

在以前的Javascript時代,這被認爲是不好的做法,因爲我們想要儘可能多地分離HTML和JS以實現更好的代碼管理。您不能快速導航到您的onClick在HTML頁面與另一堆button

在React中,您可以通過組件樹管理應用程序代碼。我認爲發生反應的動力是:

  • 模塊化
  • 組成
  • DRY(不要重複自己)

回到你的簡單的例子,onClick處理程序將很容易地內管理你的組件。也許還有其他一些處理程序,但在1組件的範圍內仍然很方便。取決於組件層次的哪個級別,你想要做的每件事都在同一個頁面,同一個類,相同的功能上。