2017-01-05 9 views
3

Я приготовил следующий React компонент (React версия 1.5.2):React компонент проходит прокси-объект, а не объект Event в функции обработчика

var QuickSearch = React.createClass({ 
 

 
    searchHandler: function(){ 
 
     this.props.parent.props.dataSource.search = this.refs.SearchInput.value; 
 
     this.props.parent.props.dataSource.setPage(1); 
 
     this.props.parent.getData(); 
 
    }, 
 

 
    refreshHandler: function(){ 
 
     this.props.parent.props.dataSource.search = this.refs.SearchInput.value; 
 
     this.props.parent.getData(); 
 
    }, 
 

 
    myEventHandler: function(evt){ 
 
     console.log(evt); 
 
     if(evt.keyCode === 13) { 
 
      evt.stopPropagation(); 
 
      this.searchHandler(); 
 
     } 
 
    }, 
 

 

 
    render: function(){ 
 

 
     /* Translation function from table model */ 
 
     _ = this.props.parent.props.table_model.gettrans; 
 

 
     return(
 
      <div className="reactable-quicksearch-wrapper"> 
 
       <input ref="SearchInput" type="text" onKeyPress={this.myEventHandler} placeholder={_('Search phrase...')} /> 
 
       <button ref="SearchButton" type="button" onClick={this.searchHandler}>{_('Search')}</button> 
 
       <button ref="RefreshButton" type="button" onClick={this.refreshHandler}>{_('Refresh')}</button> 
 
      </div> 
 
     ); 
 
    } 
 

 
});

myEventHandler функцию, как "ЭВТ" передает объект Proxy, который содержит «цель» (в основном входной) и обработчик:

Proxy { <target>: Object, <handler>: Object } 

Я не знаю, почему, но это, кажется, ведут себя как «с ubmit "(??) В любом случае, из того, что я прочитал, должен пройти стандартный объект события, но это не так.

Что может вызывать такое поведение?

ответ

1

Это ожидаемое поведение. React не использует собственные события для устранения несогласованности браузера и использует SyntheticEvent s. Что-то выглядит странно. Имя класса IIRC - SyntheticEvent, а не прокси.

+0

в прокси-сервере содержит набор: [105] - это основной объект ввода. – PiWo