2017-09-13 3 views
-2

タイマーが一度に実行するたびに、私はfetch httpパラメータは、タイマーsetIntervalでどのように増加しますか?

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

の内側(0)myFuncというを呼び出します? – bennygenel

答えて

0

--- 1 によってこれが私のコードであるパラメータページ、ページ数を取得するためにタイマーを持つ関数をしたいですまず第一に、setStateは非同期関数であり、コンポーネントの状態はすぐには変更されません。私はいくつかの再帰があなたのために仕事をすることができると思います。 setStateには、状態がミュートされた後に呼び出されるコールバックである第2パラメータがあります。 myFunc(pageNum)にパラメタを追加して、ページの数よりも少ないか等しいかどうか、ページがフェッチされた後に同じ関数myFunc(pageNum + 1)を呼び出すかどうかを確認できます。

そして、あなたはまだのようにsetTimeoutを内側にmyFunc(PAGENUM + 1)を追加し、関数呼び出しの間隔が必要な場合:

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

や質問は何componentWillMount

+0

私が欲しいのは、一度だけ実行するのではなく、常に実行しているので、不適切なsetTimeoutを使用してください。 – mofeng

+0

それでは、「必要なページ数より少ないか等しい」部分を削除してください。 – Coldblue

関連する問題