Реагировать 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} />;
  }
});

Другие вопросы по тегам