在工作中,我偶然发现了这样的代码
function Component({ data }) {
const [number, setNumber] = useState(0);
const [speed, setSpeed] = useState(0);
const [angle, setAngle] = useState(0);
useEffect(() => {
const updateValues = (newValue, check, setter) => {
if (check) {
setter(newValue):
} else {
setter(null):
}
};
updateValues(10, true, setNumber);
updateValues(20, false, setSpeed);
updateValues(30, true, setAngle);
}, [data]);
// ...
}
在这里,我们可以看到 useEffect() 中有一个名为 updateValues() 的函数,它可以执行多个状态更新。我被告知要将此函数导出到另一个文件中以解决性能问题。
// file1.js
export const updateValues = (newValue, check, setter) => {
if (check) {
setter(newValue):
} else {
setter(null):
}
};
// Component.js
import { updateValues } from "file1.js";
function Component({ data }) {
const [number, setNumber] = useState(0);
const [speed, setSpeed] = useState(0);
const [angle, setAngle] = useState(0);
useEffect(() => {
updateValues(10, true, setNumber);
updateValues(20, false, setSpeed);
updateValues(30, true, setAngle);
}, [data]);
// ...
}
我一直想知道这样的事情在 React 中是否真的存在问题? React 官方文档在 useEffect() 中提供了多个函数示例,但几乎没有提及垃圾收集。我想知道垃圾收集是否会在适当的时间正确销毁导入的函数。
我的假设是,导入一个函数或其他任何东西都会在内存中创建一些东西,即使我们不需要它,它仍然存在。
我不确定这个问题是否是一个“基于意见”的问题,因为我只是在寻找有关内存和垃圾收集在 useEffect() 内部如何工作的解释。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号