我每10秒調用一次函數。react setState導致不穩定的數組行爲
setInterval(this.getStudent, 10000);
在該函數中,它應該獲取學生數組的最新狀態。
getStudent() {
const initialArr = this.state.students;
const student = createStudent(); // this function works
// it just returns a student object
initialArr.push(student);
this.setState({ students: initialArr });
}
如果我console.log(this.state.students);
它顯示在10秒後創建一個學生就好了。
Object // After 10 seconds perfect!
name: Liam Smith
major: BIO
...
但又過了10秒(共20秒),它應該只是追加一個新創建的學生。但它附加一個額外所以看起來是這樣的:
[Object, Object, Object]
然後從那裏計時器得到全亂了,並增加了就隨時新生。但爲什麼會有這種反應狀態呢?我怎樣才能簡單地每10秒鐘添加一個學生?
PS:我打電話的setInterval內作出這樣的...
render() {
setInterval(this.getStudent, 10000);
console.log(this.state.cards);
return (
<div>
....
從哪裏調用'setInterval'?這聽起來像是你在不適當的生命週期方法中調用它,因此你有多個同時運行的時間間隔。 –
我叫它內渲染()@DaveNewton更新後 – Modelesq