我有一个存储为prop的数组:
constructor(props) {
super(props);
this.letters = [];
}
在componentDidMount
方法中,我将此道具放在其中有forEach
的{{1}}循环中:
setTimeout
这可以按预期工作,将一个类添加到prop数组中的每个元素。
然后,我尝试在此循环之后添加第二个componentDidMount() {
this.letters.forEach((letter, index) => {
setTimeout(function() {
letter.classList.add('stroke');
}, index * 125);
});
}
循环。这看起来有些混乱,但是它与第一个forEach
循环基本相同,但是它包裹在forEach
中,因此它在1秒后开始:
setTimeout
在 this.letters.forEach((letter, index) => {
setTimeout(function() {
letter.classList.add('stroke');
}, index * 125);
});
setTimeout(function() {
this.letters.forEach((letter, index) => {
setTimeout(function() {
letter.classList.add('fill');
}, index * 125);
});
}, 1000);
上这两个forEach
循环中,我在第二个循环的this.letters
行上得到了这个错误:
TypeError:无法读取未定义的属性“ forEach”
我尝试将this.letters.forEach...
设置为this.letters
中的另一个变量,并使用该变量而不是componentDidMount
:
this.letters
这可行,但是我不确定我为什么 const letters = this.letters;
letters.forEach((letter, index) => {
setTimeout(function() {
letter.classList.add('stroke');
}, index * 125);
});
setTimeout(function() {
letters.forEach((letter, index) => {
setTimeout(function() {
letter.classList.add('fill');
}, index * 125);
});
}, 1000);
不起作用?
我还尝试用this.letters
变量而不是letters
替换循环中的一个-第一个循环在this.letters
下工作正常,但是第二个循环在this.letters
,无论如何。
答案 0 :(得分:0)
const letters = this.letters;
letters.forEach((letter, index) => {
setTimeout(() => {
letter.classList.add('stroke');
}, index * 125);
});
setTimeout(function() {
letters.forEach((letter, index) => {
setTimeout(() => {
letter.classList.add('fill');
}, index * 125);
});
}, 1000);
问题出在箭头上(react使用es6箭头作为将其绑定到函数的方式)。
setTimeout(function() {
-> setTimeout(() => {