我爲React創建了一個Dropdown組件。在下拉列表中,我有一種無線電組按鈕。React渲染,以編程方式更改單選按鈕
<DropdownButton />
<DropdownForm />
在DropdownButton中,我有一個狀態來判斷它是否打開。取決於此,DropdownForm它隱藏或不(使用display:none)。
用例是:用戶選擇一個單選按鈕,單擊應用和發生的事情。但是,如果用戶選擇某個單選按鈕,並將鼠標移出下拉框(不單擊「應用」按鈕),則選擇的應該是我從商店獲得的那個按鈕。
喜歡的東西:
render: function() {
...
if(store.getSomeParam() != this.state.someParam && !this.props.isOpen){
someParam = store.getSomeParam()
}
然後單選按鈕,如:
<input checked={someParam == "something"} ... />
它並沒有真正的工作。它重新渲染,但它不會更改檢查的按鈕。我也試過參考:
this.refs.myInput.getDOMNode().checked = true
但仍然沒有。這是一個正確的行爲?
到目前爲止我發現的唯一解決方案是不使用CSS隱藏類(display:none)。因此,我所做的是DropdownButton根據它是否打開呈現DropdownForm(因此,如果關閉它,則強制DropdownForm卸載)。然後再次打開時,它將從商店獲取值(getInitialState),並顯示選定的正確單選按鈕。但是,我不確定這是否是最好的解決方案,以及卸載組件時是否有任何缺點,而不僅僅是隱藏它。