当前位置: 首页 > 知识库问答 >
问题:

如何在React钩子中使用componentWillMount()?

贺宜修
2023-03-14

在React的官方文件中提到-

如果您熟悉React类生命周期方法,那么可以将useEffect钩子看作componentDidMount、componentDidUpdate和componentWillUnmount的组合。

我的问题是--我们如何在钩子中使用componentwillmount()生命周期方法?

共有1个答案

唐裕
2023-03-14

不能在钩子中使用任何现有的生命周期方法(componentdidmountcomponentdidupdatecomponentwillunmount等)。它们只能在类组件中使用。和钩子,您只能在功能组件中使用。下面一行来自React文档:

如果您熟悉React类生命周期方法,可以将UseEffect钩子看作ComponentDidMountComponentDidUpdateComponentWillUnmount组合。

建议是,您可以从类组件中模仿这些生命周期方法的一个功能组件。

componentdidmount中的代码在组件装入时运行一次。此行为的useEffect钩子等价物是

useEffect(() => {
  // Your code here
}, []);

注意这里的第二个参数(空数组)。这将只运行一次。

如果没有第二个参数,useEffect钩子将在组件的每个呈现中调用,这可能是危险的。

useEffect(() => {
  // Your code here
});

componentwillunmount用于清理(例如删除事件侦听器、取消计时器等)。假设您正在componentdidmount中添加事件侦听器,并在componentwillunmount中删除它,如下所示。

componentDidMount() {
  window.addEventListener('mousemove', () => {})
}

componentWillUnmount() {
  window.removeEventListener('mousemove', () => {})
}

以上代码的钩子等价物如下所示

useEffect(() => {
  window.addEventListener('mousemove', () => {});

  // returned function will be called on component unmount 
  return () => {
    window.removeEventListener('mousemove', () => {})
  }
}, [])
 类似资料:
  • 我试图在react with typescript中创建一个登录表单。但setEmail方法不接受该值。它表示“string”类型的参数不能分配给“SetStateAction”类型的参数。我该怎么解决它?

  • 当类组件的输入道具相同时,可以使用PureComponent或ShouldComponentUpdate来避免呈现。现在,您可以通过将函数组件包装在react.memo中来对它们进行同样的处理。 所期望的: 我希望只有当模态可见时才呈现模态(由this.props.show管理) 对于类组件: 如何在功能组件中使用?在modal.jsx中? 相关代码: 功能组件modal.jsx(我不知道如何检查

  • 问题内容: React钩子介绍了用于设置组件状态的方法。但是我如何使用钩子来代替如下代码的回调: 我想在状态更新后做一些事情。 我知道我可以用来做其他事情,但是我必须检查状态以前的值,这需要一个位代码。我正在寻找可以与钩子一起使用的简单解决方案。 问题答案: 您需要使用钩子来实现此目的。

  • React hooks引入了来设置组件状态。但是我如何使用钩子来替换回调,如下代码所示:

  • 问题内容: 因此,我有一个数据数组,并且正在使用该数据生成组件列表。我想在每个生成的元素上都有一个引用来计算高度。我知道如何使用Class组件执行此操作,但是我想使用React Hooks进行操作。 这是一个说明我要做什么的示例: 问题答案: 不确定我是否完全理解您的意图,但我认为您需要这样的东西:

  • 我使用的是commercehub oss/gradle cucumber jvm插件。希望实现自动设置和拆卸的挂钩。就像在junit RunCuketTests中,@BeforeClass和@AfterClass 如何在此插件的自动化中实现这些? https://github.com/commercehub-oss/gradle-cucumber-jvm-plugin