2017-02-20 48 views
0

我需要使該頁面自動刷新,使ajax調用後端3分鐘,如何設置?我在想的是在ajax中設置一個時間間隔,讓它每3分鐘自動調用一次?有什麼辦法可以實現這個嗎? 或者有更好的解決方案來實現這個?如何讓Ajax調用自動刷新的反應js

export default class InventoryLevelReport extends React.Component { 
    constructor() { 
    super(); 

    this.state = { 
     data: [ 
     { 
      sku: null, 
      inventoryCount: 0 
     } 
     ], 
     url: '/mft/api/reports/inventory-view' 
    }; 
    } 

    sortByCount() { 
    this.setState({data: _.orderBy(this.state.data, (i) => i.inventoryCount)}); 
    } 

    componentDidMount() { 
    ajax(this.state.url, { 
     success: data => { 
     console.log(data); 
     this.setState({data: data.data}); 
     } 
    }); 
    } 

    render() { 
    const buttonStyle = { 
     position: 'relative', 
     float: 'right' 
    }; 
    return <div className="content"> 
     <Button style={buttonStyle} onClick={() => this.sortByCount()}>Sort</Button> 
     <div> 
     <Table tableType='bordered'> 
      <th>SKU</th> 
      <th>Count</th> 
      <tbody> 
      {this.state.data.map((data, i) => <InventoryTableRow data={data} key={i} />)} 
      </tbody> 
     </Table> 
     </div> 
    </div>; 
    } 
} 

class InventoryTableRow extends React.Component { 

    render() { 
    return (
     <TableRow> 
     <TableColumn>{JSON.stringify(this.props.data.sku).split('"').join('')}</TableColumn> 
     <TableColumn>{JSON.stringify(this.props.data.inventoryCount)}</TableColumn> 
     </TableRow> 
    ); 
    } 
} 
+0

來包裝你的AJAX調用處理複雜的相互作用,你可能想看看[終極版](https://github.com/reactjs/redux ),[react-redux](https://github.com/reactjs/react-redux)和[redux-thunk](https://github.com/gaearon/redux-thunk)。 –

回答

0

你應該能夠setInterval

constructor() { 
    super(); 

    // ... existing constructor code 

    this.loadData = this.loadData.bind(this) 
} 

loadData() { 
    ajax(this.state.url, { 
    success: data => { 
     console.log(data); 
     this.setState({data: data.data}); 
    } 
    } 
} 

componentDidMount() { 
    this.loadData() 
    setInterval(this.loadData), 180000); // 3 minutes in milliseconds 
} 
+0

感謝您的回答,但是當我將它設置爲30秒時,第一次出現會在30秒後出現,如何避免這種情況? –

+0

我已經爲你修改了我的答案。基本上只是先調用一次。 –

+0

嘿,我已經嘗試了你的解決方案,它只在頁面加載時第一次工作 –