奇怪的 class 属性 行为
Weird class property behaviour
我在使用 React 时遇到了一些奇怪的事情。
class C extends React.Component {
componentDidMount = this.animate; // <---
animate = () => ...
}
这没有用,所以我不得不更改 componentDidMount 的值并且它起作用了:
class C extends React.Component {
componentDidMount = () => this.animate(); // Lambda is required?
animate = () => ...
}
有人能很好地解释为什么需要这样做吗?
如果你写
class C extends React.Component {
componentDidMount = this.animate; // <---
animate = () => ...
}
然后componentDidMount
设置为undefined
因为当时没有设置animate
对于 componentDidMount = () => this.animate();
,每次调用 componentDidMount
时都会解析 this.animate();
,这就是为什么这对您有用。
如果你这样写:
class C extends React.Component {
animate = () => ...
componentDidMount = this.animate; // <---
}
然后componentDidMount
会引用你之前分配给animate
的函数。
但是如果你想为 class 定义方法,你应该检查 的答案,因为那样你不应该使用赋值,而应该使用方法定义 animate() {}
您应该将 animate 方法定义为 class 方法,而不是箭头函数。
class C extends React.Component {
componentDidMount = this.animate;
animate() {}
}
我在使用 React 时遇到了一些奇怪的事情。
class C extends React.Component {
componentDidMount = this.animate; // <---
animate = () => ...
}
这没有用,所以我不得不更改 componentDidMount 的值并且它起作用了:
class C extends React.Component {
componentDidMount = () => this.animate(); // Lambda is required?
animate = () => ...
}
有人能很好地解释为什么需要这样做吗?
如果你写
class C extends React.Component {
componentDidMount = this.animate; // <---
animate = () => ...
}
然后componentDidMount
设置为undefined
因为当时没有设置animate
对于 componentDidMount = () => this.animate();
,每次调用 componentDidMount
时都会解析 this.animate();
,这就是为什么这对您有用。
如果你这样写:
class C extends React.Component {
animate = () => ...
componentDidMount = this.animate; // <---
}
然后componentDidMount
会引用你之前分配给animate
的函数。
但是如果你想为 class 定义方法,你应该检查 animate() {}
您应该将 animate 方法定义为 class 方法,而不是箭头函数。
class C extends React.Component {
componentDidMount = this.animate;
animate() {}
}