【发布时间】:2017-08-16 02:17:14
【问题描述】:
如果用户按下“+”按钮,我想显示数据库中的表列表,并在按下“-”按钮时删除表列表。我的代码是:
class DatabaseItem extends Component{
constructor(){
super();
this.state = {
tabList : [],
plusIsNext : true
};
}
flagOn(){
this.setState({
plusIsNext:!this.state.plusIsNext
});
}
showTables(){
if(this.state.plusIsNext){
httpUtil.get(`http://localhost:4553/api?query=
SELECT * FROM information_schema.tables WHERE table_schema='public'`,this.props.dbname).then(response => {
this.setState({
tabList:response.data
})
});
}
else{
let arr = [];
this.state.tabList = [];
console.log(this.state.tabList);
}
this.flagOn();
}
render(){
let sign = this.state.plusIsNext ? '+':'-';
return(
<div key ={this.props.dbname} >
<button onClick ={() => {this.showTables()}}>{sign}</button><a>{this.props.dbname}</a>
{this.state.tabList.map(table => {
return(
<div key = {table.table_name}>{table.table_name}</div>
);
})}
</div>
);
}
}
现在我已经通过将空数组 [] 重新分配给 this.state.tabList 来直接更新 tabList 的值,并且它可以工作。如果我按下特定数据库的 + 按钮,将显示特定数据库的表,如果按下 - 按钮,列表就会消失。但是如果我使用 setState 将空数组重新分配给 tabList,tabList 不会为空。
this.setState({
tabList:[]
})
或
let arr = [];
this.setState({
tabList:arr
});
我错过了什么吗?
【问题讨论】: