У меня есть входы радиокнопки с обратным вызовом onChange
, который запускает длительное действие - вычисление на сервере. Я хочу, чтобы мой ввод обновлялся, чтобы появляться, чтобы проверить, как только он щелкнут, а не только когда вычисление завершено - иначе пользователь думает, что он не щелкнул правой кнопкой и не щелкнул.React check radio button
Так что я не могу установить атрибут «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}
/>;
}
Есть ли лучше способ проверить сразу, визуально, вариант, который пользователь нажал?
Чтобы передать подпорку в качестве начального значения до состояния хорошо. Это может быть анти-шаблон, но приемлемой практикой является реакция на его использование для установки начального значения состояния, как в вашем случае, как описано [здесь, в документах] (https://facebook.github.io/react/tips /props-in-getInitialState-as-anti-pattern.html) – wintvelt
Спасибо за ссылку. Я думаю, что я буду придерживаться этого. Лучше, чем прохождение обратных вызовов. – JulienD