2015-11-02 44 views
0

我將ElasticSearch路由連接到我的ReactJS服務CodeService.js。這樣,API get就會在輸入字段中的每個鍵上觸發。這工作得很好。當我記錄每個階段時,我可以在網絡和控制檯中看到新對象得到了很好的處理。reactjs爲elasticsearch取代事件

而不是在Order.jsx。在那裏我總是有一次擊鍵。 當我碰到例如0比我可以清楚地看到API被調用,並且它去了CodeStore.js,但在Order.jsx提示提示[]直到我點擊第二個鍵比我得到我以前的商店版本,而不是實際的。

我的假設是我的視圖在Store被更新之前就被渲染了。我如何針對這種行爲?

這是我的代碼:

export default class Order extends React.Component { 

    constructor(props) { 
    super(props) 
    this.state = { 
     inputValue: '', 
     options: [] 
    }; 
    this.props = { 
     inputValue: '', 
     options: [] 
    }; 
    this._onChange = this._onChange.bind(this); 
    } 

    handleHint(){ 
    return 'blahblahblha'; 
    } 

    handleComplete(){ 
    alert('complete!'); 
    } 

    _onChange(event) { 
    var enteredChars = event.target.value; 
    this.setState({inputValue: enteredChars}); 
    CodeService.nextCode(enteredChars); 
    } 

    getCodeState() { 
    return { 
     options: CodeStore.postcode 
    }; 
    } 

    render() { 
    return (
     <div className="newer">[...])} 

回答

0

我能夠加入componentDidMount解決它,並添加和eventchangelistener。

componentDidMount() { 
    CodeStore.addChangeListener(this._onChange); 
} 

唯一要考慮的事情是,你需要在你的_onChange事件的條件,否則你有一個infinty循環