2017-09-13 61 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

相关问题