写在组件内部主要是为了便于通过作用域链访问组件内定义的变量和方法 :
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
}