如何使useEffect对道具更改的反应速度与ComponentDidUpdate一样快?

时间:2019-07-31 07:58:03

标签: javascript react-native react-hooks

在以下情况下,当isLoading属性更新时,

rotateLogo()立即触发:

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])

...

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可能希望同步重新渲染,因此您应该使用useLayoutEffect而不是useEffecthttps://reactjs.org/docs/hooks-reference.html#uselayouteffect