2017-07-29 57 views
1

我很困惑一點關於如何應對手柄的onChange事件無線電輸入:陣營火的單選按鈕更改事件只有一次

var Hello = React.createClass({ 
onChange: function(e) { 
    console.log(e); 
}, 
render: function() { 
    return (
    <form onChange={this.onChange}> 
     <input type='radio' name='a' value="1" /> 
     <input type='radio' name='a' value="2" /> 
     <input type='checkbox' name='a' /> 
     <input type='checkbox' name='a1' /> 
    </form> 
    ) 
    } 
}); 

看來無線電它將觸發事件只有一次,而對於複選框鍵入按預期工作?
我做錯了什麼?

請考慮the fiddle

+0

你撥弄不匹配你想證明什麼。 –

+1

收音機可能很奇怪。 React嘗試對所有輸入進行規範化處理,以及它們如何觸發onChange,但它不像您期望的那樣工作。你應該得到一個爲你抽象(例如onClick => onChange)的廣播組組件,然後冒泡'onChange'作爲一般用途。 https://github.com/chenglou/react-radio-group –

+0

對於如何在反應本身中處理這個問題,一直存在着討論和分歧。看到https://github.com/facebook/react/issues/8727等 - 傳統的DOMApi只是點擊。 onChange在反應API中添加了一致性 - 並不意味着它按照您的預期工作。 –

回答

2

onChange回調添加到輸入端,而不是整個表單。您可以更上宣讀了在這個問題上Entire form onChange

+0

事實並非如此,我已經試過了這個 – user683680

+0

@ user683680怎麼不行?檢查這個更新的小提琴https://jsfiddle.net/73rxtk2k/1/(也解決了雙重命名的問題) – jontro

1
In 15.6.1, the first change fires, but all subsequent changes do not fire. In 15.5.4, all changes fire. 

將固定在15.6.2版本https://github.com/facebook/react/issues/10168

+0

降級時,不要忘記降級反應。在我的情況下,react-dom不會自動降級,從而破壞了我的應用程序。 –

相關問題