React JS: событие onChange и автокомплит в Safari

В замечательном Javascript фреймворке React, кроме множества плюсов, есть один неожиданный и неприятный минус. Если при заполнении поля ввода используется автокомплит браузера Safari, то событие onChange не срабатывает. Например в коде:

render: function() {
    return (
        <input type="text" value={this.state.value} onChange={this.onInputChange} />
    );
}

метод this.onInputChange не будет вызван, если пользователь при вводе в текстовое поле выберет значение из автокомпликта браузера Safari.

Одно из решений, которое встречается в интернете - это использование refs ссылок. Но у меня он не сработал. В моем случае помогло использование onBlur события.

...
render: function() {
    return (
        <input type="text" value={this.state.value} onChange={this.onInputChange} onBlur={this.onInputChange} />
    );
}

 
comments powered by Disqus