2017-02-15 78 views
0

我有下面的一些代碼反應項目:GET請求滾動事件慢

componentDidMount() { 
    window.addEventListener('scroll', this.handleScroll); 
}; 

componentWillUnmount() { 
    window.removeEventListener('scroll', this.handleScroll); 
}; 

handleScroll(event) { 
    this.load(); 
}; 

load() { 
    console.log('Loading'); 
    $.get('/latest-dishes?page=1&items=6', function(data) { 
     console.log('Loaded'); 
     console.log(data); 
    }); 
} 

render() { 
    return (
     <div> 
      <button onClick={e => this.load()}>Load</button> 
     </div> 
    ) 
} 

我在本地運行服務器。當我點擊按鈕時,數據立即被加載。

但是,當我滾動「一個單位」時,數據加載速度較慢。

我在Windows 7上使用Google Chrome。

這是怎麼回事?

更新1

我已經測試這個項目,它的工作原理以及在Firefox上,出現在Chrome這個問題。發生在Chrome 56

更新2

這個問題它運作良好,鉻58

+0

將'load()'函數附加到'window'的'scroll'事件的用法是什麼?每次滾動時,您都獲取數百倍的數據... – dashtinejad

+0

我只滾動「一個單元」。這似乎是一個鉻56的bug。 –

+0

控制檯打印什麼?當您滾動「一個單位」時,控制檯是否立即記錄「加載」? – DomeTune

回答

0

使用組件將安裝的組件,而不是安裝沒有因爲組件沒有初始狀態後,安裝觸發和渲染,而元器件將掛載將觸發之前呈現

componentWillMount() { 
window.addEventListener('scroll', this.handleScroll);}; 

閱讀更多偏好研究:)

http://busypeoples.github.io/post/react-component-lifecycle/

+0

這個問題只發生在Chrome瀏覽器上,Firefox運行良好, –

+0

我用過你的代碼,沒有改變 –

+0

而不是調用另一個加載函數在滾動上加載它.. –