在下面的代码:ReactJs,DOM没有更新
componentDidUpdate(){
let self = this;
this.state.carsOfChoosenDriver = []; // array where I want to save the cars belonging to the choosenDriver
if (typeof this.state.choosenDriver.cars !== 'undefined'){
this.state.choosenDriver.cars.forEach(function(entry) {
request
.get('api/cars/' + entry)
.end(function(err, res){
self.state.carsOfChoosenDriver.push(res.body);
console.log(self.state.carsOfChoosenEvent);
});
});
}
}
handleEventClick(i){
this.setState({choosenDriver: this.state.drivers[i]});
}
我选择从哪个触发handleEventClick()
列表的驱动程序。 choosenDriver.cars
包含我用来从数据库中获取汽车对象的id数组。这一切正常,res
被记录在控制台中。
但是,dom没有得到更新的第一次点击handleEventClick()
。
在渲染方法,我有这样的:
render() {
let cars = this.state.carsOfChoosenDriver.map(function(car, i){
return <li key={i}>{car.name}</li>;
});
return (
<div className="col-md-8">
{cars}
</div>
);
}
应该我也许还可以利用另一种生命周期方法或者我究竟做错了什么?
UPDATE:
componentDidMount() {
let self = this;
request
.get('api/driver')
.end(function(err, res){
self.setState({drivers: res.body});
});
}
你可以检查'render()'是否被第一个'handleEventClick()'调用?如果没有,可能是'shouldComponentUpdate()'生命周期 - 方法 –
是一个问题,通过在render-method中添加一个警报,我可以看到它在组件ID更新 – RogerDore