2017-09-13 30 views
-2

我想做一個功能與計時器得到的頁數,只要定時器運行一次,由1 參數頁這是我的代碼---如何使用定時器setInterval提取http參數?

constructor() { 
 
    super(); 
 
    this.state = { 
 
     data: '', 
 
     page: 0 , 
 
    } 
 
    } 
 

 
    myFunc =() => { 
 
    let myFetchOptions = { 
 
     method: 'GET', 
 
    }; 
 

 
    fetch("http://xxx/Api/screen/screenByAll.ashx?Status=All&ActionNm=8080&page="+this.setState((page) => page++)+"&rows=10",myFetchOptions) 
 
    .then((response) => response.text()) 
 
    .then((responseText) => { 
 
     const json = JSON.parse(responseText); 
 
     return json; 
 
    }) 
 
    .then(json => this.setState({data: json})) 
 
    .catch((error) =>{ 
 
     console.error(error); 
 
    }); 
 

 
    } 
 

 
    componentWillMount(){ 
 
    setInterval(this.myFunc, 3000); 
 
    }

+3

問題是什麼? – bennygenel

回答

0

首先,setState是一個異步函數,組件的狀態不會立即發生變化。我想有些遞歸可以爲你做這項工作。 setState具有第二個參數,該參數是在狀態靜音後調用的回調函數。你可以添加一個參數給myFunc(pageNum),並檢查它是否小於或等於你想要的頁面數量,並且在獲取頁面後調用相同的函數myFunc(pageNum + 1)。

如果你仍然需要函數調用之間的時間間隔,增加myFunc的(頁次+ 1)內的setTimeout,如:

setTimeout(() => {this.myFunc(pageNum + 1)}, 3000) 

,並呼籲myFunc的(0)的componentWillMount內

+0

我想要的是所有的時間運行,不只是運行一次,所以使用setTimeout不適當 – mofeng

+0

那麼,只是刪除「如果它小於或等於你想要的頁數」部分,你應該沒問題。 – Coldblue

相關問題