在下面的代碼: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