首页 > 试题广场 >

考虑以下代码片段:`useEffect(() = { *

[单选题]
在如下 React 代码中,`useEffect` 依赖 `dep`。组件首次渲染时 `dep=1`,随后把 `dep` 更新为 `2`。请问这次更新过程中(非卸载阶段)的执行顺序是?
import React, { useEffect } from 'react';

function Demo({ dep }) {
  useEffect(() => {
    // A: 新依赖对应的 effect
    console.log('effect A, dep =', dep);

    return () => {
      // B: 旧依赖对应的 cleanup
      console.log('cleanup B, dep =', dep);
    };
  }, [dep]);

  return null;
}
  • 先执行与 `dep=2` 关联的 effect (A),再执行与 `dep=1` 关联的 cleanup (B)。
  • 先执行与 `dep=1` 关联的 cleanup (B),再执行与 `dep=2` 关联的 effect (A)。
  • 只会执行与 `dep=2` 关联的 effect (A),cleanup (B) 只在组件卸载时执行。
  • 执行顺序是不确定的,由 React 的内部调度算法决定。
依赖更新时:先执行上一次 effect 返回的清理函数,再执行本次新的 effect。
发表于 今天 06:36:32 回复(0)