我的单选按钮输入带有onChange
回调,触发长动作 - 在服务器上进行计算。我希望我的输入现在更新,一旦点击它就会立即显示检查,不仅在计算完成时 - 否则用户认为他没有点击正确并继续点击。
所以我不能用props设置“checked”属性,否则它必须等待计算结束。在myinput.checked = "checked"
回调中调用inChange
也不会更新它。
我的解决方法是编写10条丑陋和愚蠢的代码行,比如这些代码,以便状态首先更新,然后我们在操作结束时获取道具:
getInitialState: function () {
// "anti-pattern", according to the docs
return {value: this.props.value};
},
componentWillReceiveProps: function(nextProps) {
// because we use the state in the <input>, it needs to mirror the props
// when they change for another reason. I call it dirty.
this.setState({value: nextProps.value});
},
onChange: function (e) {
this.setState({value: e.target.value}); // to update it right now
Actions.longAction(e.target.value); // long action
},
render: function() {
...
return <input
...
type="radio"
checked={ this.state.value === 1}
/>;
}
有没有更好的方法可以立即检查用户点击的选项?