写在组件内部主要是为了便于**通过作用域链访问组件内定义的变量和方法** : function TestComponent(){ const [pages, setPages] = useState([]); useEffect(() => { fetch("path/to/pages").then(async (res) => { const { info } = await res.json(); // 这里访问了组件内定义的方法 setPages setPages(info); }); },[]); return xxxx } 上述方法如果要搬到组件外,可以这样写: const genarateEffectCallback = setPages => () => { fetch("path/to/pages").then(async (res) => { const { info } = await res.json(); // 这里的 setPages 由外界传入 setPages(info); }); } function TestComponent(){ const [pages, setPages] = useState([]); useEffect(genarateEffectCallback(setPages), []); return xxxx }