Реагировать LinkedStateMixin с геокомплектом
В настоящее время используется Rails 4 с самоцветами реактивных рельсов и самоцветом geocomplete.
Все работало нормально, пока я не изменил интерфейс для использования Reactjs. Когда я набираю несколько символов, появляется список автозаполнения. Я выбираю местоположение, но в моем штате отображаются только несколько символов. Пример: когда я набираю "бир", отображается список "Бирмингем". Если я выберу "Бирмингем, Великобритания", то сохранится только "Бир", почему?
js.jsx:
var NewProject = React.createClass({
mixins: [React.addons.LinkedStateMixin],
getInitialState: function() {
return {
location: this.props.data.location
}
},
render: function(){
$("#location").geocomplete({ details: "form" });
return <input type="text" id="location" valueLink={this.linkState('location')} />;
}
});
Как получить полное значение строки при выборе независимо от того, набрал ли я несколько символов?
1 ответ
Проблема в том, что geocomplete делает что-то магическое с входными данными, что не совсем соответствует тому, как React наблюдает за модификацией поля. Я бы попытался использовать другое решение для автозаполнения, но если вам нужно использовать geocomplete, вы можете попробовать использовать jquery + простой метод onChange для обнаружения изменений в поле. Что-то вроде этого:
var NewProject = React.createClass({
getInitialState: function() {
return {
location: this.props.data.location
}
},
onGeoChange: function(e) {
this.setState({
location: $("#location").val()
});
},
render: function(){
$("#location").geocomplete({ details: "form" });
return <input type="text" id="location" onChange={this.onGeoChange} />;
}
});