【问题标题】:Is setting the useState to it's default value in the useEffect return hook necessary?是否需要在 useEffect 返回挂钩中将 useState 设置为其默认值?
【发布时间】:2020-05-22 07:36:09
【问题描述】:

假设我有以下代码,它有一个 useState 钩子,它的默认值是一个空数组:

import React, { useState, useEffect } from "react";

export default () => {
  const [fooData, setFooData] = useState([]);

  useEffect(() => {
    // some data fetching from and API happens here... example: setFooData(data);

    // this is what I am talking about
    return () => setFooData([]);
  }, []);
}

所以基本上这是做什么的,它是获取数据,将其设置为状态并在卸载时再次清除它,但是return () => setFooData([]) 有必要吗?我还需要清除卸载时的数据吗?

【问题讨论】:

    标签: reactjs react-hooks


    【解决方案1】:

    您绝对不需要在卸载组件时将状态设置为初始状态。

    提供清理功能以删除侦听器或订阅。

    您的状态引用在卸载时被清除并收集垃圾。当组件再次挂载时,状态再次初始化。

    【讨论】:

    • 啊,所以我基本上是在自己做清理工作?
    • 将状态设置为 initialValue 不会产生影响,它只是一个额外的步骤
    【解决方案2】:

    没必要。

    只需获取数据并将其放入您的状态即可。这种情况下就不用担心清理状态了

    【讨论】:

      【解决方案3】:

      react useEffect 钩子有一个清理回调函数,可用于清理你的状态。

      useEffect(() => {
      
      // Specify how to clean up after this effect:
      return function cleanup() {
       // clean up code 
      }; });
      

      【讨论】:

        猜你喜欢
        • 2021-12-01
        • 2020-12-16
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        • 1970-01-01
        相关资源
        最近更新 更多