UseEffect初始状态加载
UseEffect initial state loading
有人可以解释为什么 console.log(foodList) return 是空数组而不是过滤数组吗?
我正在做分页逻辑,我需要先过滤数组然后显示它。然而,这就像副作用一样,应该只执行一次,因为还有一些其他的事情会触发组件重新执行,所以这必须在 useEffect 中。
伪代码只是此函数之上的数据,您不必为它操心。
函数 1
const correctFunction = () => {
const pages = Math.ceil(DUMMY_FOOD.length / 5);
const arr = [];
let helpArr = [];
let c = 0;
for (let i = 0; i < pages; i++) {
for (let j = c; j < c + 5; j++) {
helpArr.push(DUMMY_FOOD[j]);
}
c += 5;
arr.push(helpArr);
helpArr = [];
}
DUMMY_FOOD = arr;
return DUMMY_FOOD;
};
组件
const MenuList = () => {
const navigate = useNavigate();
const location = useLocation();
const params = useParams();
const [page, setPage] = useState(2);
let foodList = [];
console.log(DUMMY_FOOD);
useEffect(() => {
foodList = correctFunction();
}, []);
console.log(foodList);
ect...
谢谢。
效果挂钩运行在渲染函数完成后。如果要呈现效果的结果,请使用状态。将其设置在效果中以触发 re-render.
如果你想做一次昂贵的操作,然后使用 useMemo
。
const foodList = useMemo(correctFunction, []);
有人可以解释为什么 console.log(foodList) return 是空数组而不是过滤数组吗? 我正在做分页逻辑,我需要先过滤数组然后显示它。然而,这就像副作用一样,应该只执行一次,因为还有一些其他的事情会触发组件重新执行,所以这必须在 useEffect 中。 伪代码只是此函数之上的数据,您不必为它操心。
函数 1
const correctFunction = () => {
const pages = Math.ceil(DUMMY_FOOD.length / 5);
const arr = [];
let helpArr = [];
let c = 0;
for (let i = 0; i < pages; i++) {
for (let j = c; j < c + 5; j++) {
helpArr.push(DUMMY_FOOD[j]);
}
c += 5;
arr.push(helpArr);
helpArr = [];
}
DUMMY_FOOD = arr;
return DUMMY_FOOD;
};
组件
const MenuList = () => {
const navigate = useNavigate();
const location = useLocation();
const params = useParams();
const [page, setPage] = useState(2);
let foodList = [];
console.log(DUMMY_FOOD);
useEffect(() => {
foodList = correctFunction();
}, []);
console.log(foodList);
ect...
谢谢。
效果挂钩运行在渲染函数完成后。如果要呈现效果的结果,请使用状态。将其设置在效果中以触发 re-render.
如果你想做一次昂贵的操作,然后使用 useMemo
。
const foodList = useMemo(correctFunction, []);