Próbuję ReactJS, ale mam trudności z włączeniem go do mojej postaci. W ReactJS buduję formularz autosugestii. W moim onChangeQuery
ustawiam stan, a następnie wywołuję funkcję AJAX, aby pobrać sugestie z mojego kodu po stronie serwera; Zauważyłem jednak, że funkcja loadGroupsFromServer
nie otrzymuje ostatniego stanu ... To jedno naciśnięcie klawisza zbyt wolne. Wiem, że setState nie jest natychmiastowy, ale dlaczego miałbym kiedykolwiek używać setState do moich formularzy? Czy lepiej stosować refs? Lepiej zdobyć wartość z e.target.value?ReactJS setState jest powolny
Pomoc!
var GroupForm = React.createClass({
getInitialState: function() {
return {query: "", groups: []}
},
componentDidMount: function() {
this.loadGroupsFromServer();
},
loadGroupsFromServer: function() {
$.ajax({
type: "GET",
url: this.props.url,
data: {q: this.state.query},
dataType: 'json',
success: function (groups) {
this.setState({groups: groups});
}.bind(this),
error: function (xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
onChangeQuery: function(e) {
this.setState({query: e.target.value})
this.loadGroupsFromServer();
},
render: function() {
return (
<div>
<form class="form form-horizontal">
<div class="col-lg-12">
<input type="text" className="form-control" value={this.state.query} placeholder="Search for groups" onChange={this.onChangeQuery} />
</div>
</form>
<GroupList groups={this.state.groups} />
</div>
)
}
})
jeśli wywołasz setState samodzielnie, nie powinieneś oczekiwać, że to .state zostanie natychmiast zaktualizowane. –