我为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),并显示选定的正确单选按钮。但是,我不确定这是否是最好的解决方案,以及卸载组件时是否有任何缺点,而不仅仅是隐藏它。