我有一個ReactJS項目,我從REST Django主機獲取JSON併爲其創建一個帶有過濾器的表。我有一個表類:如何僅當我更改類道具時加載組件
class MainTable extends React.Component {
constructor(props) {
super(props);
this.state = {
results: []
};
}
componentDidMount(){
axios.get(this.props.link)
.then(res => {
this.setState({results: res.data.results});
});
}
render() {
return (
<Table hover striped bordered responsive size="sm">
<thead>
<tr>
<th>Name</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{this.state.results.map(result =>
<tr key={result.fileId}>
<td>{result.Name}</td>
<td>{result.Name}</td>
</tr>
)}
</tbody>
</Table>
);
}
}
而且主要在哪裏運行所有過濾器類:
class Main extends React.Component {
constructor() {
super();
this.state = {
origin: '',
limit: 10
};
this.handleChangeOrigin = this.handleChangeOrigin.bind(this);
this.handleChangeLimit = this.handleChangeLimit.bind(this);
}
handleChangeLimit(event) {
this.setState({limit: event.target.value});
}
handleChangeOrigin(event) {
this.setState({origin: event.target.value});
}
render() {
var link = `http://106.120.89.142:8000/database/?limit=${this.state.limit}&`;
if (this.state.origin){
link += `ORIGIN=${this.state.origin.toLowerCase()}`;
console.log(link)
}
return (
<div>
<div>
<h1 className="jumbotron-heading display-4">Here u got database *_*</h1>
</div>
<div>
<Limit handleChange = {this.handleChangeLimit} />
</div>
<div>
<OriginRow handleChange = {this.handleChangeOrigin} />
</div>
<div id="tableWrapper">
<MainTable link={link} />
</div>
</div>
);
}
}
,我已經出了問題,因爲當我使用componentDidMount()
,我axios.get(my link to REST JSON)
只運行一次。當我在Table class render()
中使用axios
時,它每秒鐘觸發我的服務器幾次。只有當我的表格類的道具改變時,我纔可以進行安裝嗎?
*「只有當我的表格類的道具改變了,我才能進行安裝嗎?」 - 你的意思是'TableMain'組件嗎?因爲'Table'是一個react-bootsrap組件。 – Chris
'MainTable類',正好。對不起,我可以更精確。 –