如何将componentDidUpdate转换为useEffect react hook?

时间:2019-07-10 06:10:15

标签: javascript reactjs react-hooks use-effect

我将基于类的组件转换为功能组件,并认为我可以正确转换componentDidUpdate方法,但是我的棉绒匠抱怨,所以我可以对自己犯的错误进行一些说明。

这是我在基于类的组件上的componentDidUpdate函数:

componentDidUpdate(prevProps) {
  if (
    prevProps.hasUnlockBeenClicked !== this.props.hasUnlockBeenClicked &&
    this.props.hasUnlockBeenClicked &&
    !this.props.startAt
  ) {
    this.saveInitialSession();
  }
}

saveInitialSession = () => {
  const { setSessionProperties, agentId, customerId, customerName } = this.props;
  setSessionProperties({
    agentId,
    customerId,
    customerName,
    startAt: moment().format(),
  });
}

这就是我试图将其更改为在功能组件上使用useEffect()的原因:

const saveInitialSession = () => {
  setSessionProperties({
    agentId,
    customerId,
    customerName,
    startAt: moment().format(),
  });
};

useEffect(() => {
  if (hasUnlockBeenClicked && !startAt) {
    saveInitialSession();
  }
}, [hasUnlockBeenClicked]);

Eslint告诉我,依赖项数组需要包含startAtsaveInitialSession,这对我来说没有任何意义。我只希望它在hasUnlockBeenClicked被更改的情况下运行。

0 个答案:

没有答案