在以下情况下,当isLoading属性更新时,turnLogo()将立即触发:
class Logo extends Component {
constructor(props) {
super(props);
};
}
componentDidUpdate() {
if (this.props.isLoading) {
this.rotateLogo();
}
}
...
但是,当尝试使用useEffect在功能组件中实现相同功能时,在更新isLoading和
激活rotateLogo()
const Logo = ({ isLoading }) => {
useEffect(() => {
if (isLoading) {
rotateLogo();
}
}, [isLoading])
...
最佳答案
在这种情况下,您可能希望同步重新渲染,因此应使用useLayoutEffect
而不是useEffect
:https://reactjs.org/docs/hooks-reference.html#uselayouteffect